Compare commits

...

465 Commits

Author SHA1 Message Date
J. Duke
650aac0d5e Merge 2017-07-05 18:26:51 +02:00
J. Duke
660252e4ca Merge 2017-07-05 18:26:46 +02:00
J. Duke
a7f5555be7 Merge 2017-07-05 18:26:42 +02:00
J. Duke
ef7e44d123 Merge 2017-07-05 18:26:38 +02:00
J. Duke
70623bf3ab Merge 2017-07-05 18:26:35 +02:00
J. Duke
7f6f9bba4e Merge 2017-07-05 18:26:30 +02:00
J. Duke
d9350fdee2 Merge 2017-07-05 18:26:26 +02:00
J. Duke
919df15706 Added tag jdk8-b61 for changeset cdaa6122185f 2017-07-05 18:26:11 +02:00
J. Duke
1c78bebc35 Merge 2017-07-05 18:26:11 +02:00
J. Duke
cddf07210d Merge 2017-07-05 18:26:07 +02:00
J. Duke
9f17fd50fc Merge 2017-07-05 18:25:59 +02:00
J. Duke
3fa8795fb3 Merge 2017-07-05 18:25:55 +02:00
J. Duke
3cd8332ef3 Merge 2017-07-05 18:25:50 +02:00
J. Duke
b4c5895713 Merge 2017-07-05 18:25:45 +02:00
J. Duke
71c74c0b70 Merge 2017-07-05 18:25:32 +02:00
J. Duke
87333a2f62 Added tag jdk8-b60 for changeset 5e3adc681779 2017-07-05 18:25:14 +02:00
J. Duke
34063e3656 Merge 2017-07-05 18:25:14 +02:00
J. Duke
0042095350 Merge 2017-07-05 18:25:10 +02:00
J. Duke
90f4e99281 Merge 2017-07-05 18:25:06 +02:00
J. Duke
5b7fbbf597 Merge 2017-07-05 18:25:03 +02:00
J. Duke
d83447ce3b Merge 2017-07-05 18:24:59 +02:00
J. Duke
41ffa08140 Merge 2017-07-05 18:24:56 +02:00
J. Duke
3110f8bbe6 Merge 2017-07-05 18:24:52 +02:00
J. Duke
205dc9cf8b Added tag jdk8-b59 for changeset 3bd874584fc0 2017-07-05 18:24:38 +02:00
J. Duke
4e637a8f80 Merge 2017-07-05 18:24:37 +02:00
J. Duke
376e043f9d Merge 2017-07-05 18:24:33 +02:00
J. Duke
c23b39b47b Merge 2017-07-05 18:24:29 +02:00
J. Duke
9817a2f423 Merge 2017-07-05 18:24:25 +02:00
J. Duke
c2f20c5030 Merge 2017-07-05 18:24:21 +02:00
J. Duke
23494ba5e1 Merge 2017-07-05 18:24:16 +02:00
J. Duke
a8a3c94590 Merge 2017-07-05 18:24:12 +02:00
J. Duke
a7b9262623 Added tag jdk8-b58 for changeset 479d3302a26d 2017-07-05 18:23:51 +02:00
J. Duke
5238f9a66e Merge 2017-07-05 18:23:50 +02:00
J. Duke
55b82e40b3 Merge 2017-07-05 18:23:47 +02:00
J. Duke
24677fd4bb Merge 2017-07-05 18:23:39 +02:00
J. Duke
5107b3609e Merge 2017-07-05 18:23:35 +02:00
J. Duke
20730872fc Merge 2017-07-05 18:23:31 +02:00
J. Duke
e6408227d1 Merge 2017-07-05 18:23:26 +02:00
J. Duke
bfd962e674 Merge 2017-07-05 18:23:11 +02:00
J. Duke
2fef43b669 Added tag jdk8-b57 for changeset 2c21c080b11b 2017-07-05 18:22:53 +02:00
J. Duke
901ebe2983 Merge 2017-07-05 18:22:52 +02:00
J. Duke
47bb8608ad Merge 2017-07-05 18:22:48 +02:00
J. Duke
48ad58fa77 Merge 2017-07-05 18:22:45 +02:00
J. Duke
80fc527638 Merge 2017-07-05 18:22:41 +02:00
J. Duke
20906872f6 Merge 2017-07-05 18:22:37 +02:00
J. Duke
4246df5345 Merge 2017-07-05 18:22:34 +02:00
J. Duke
8a55a875e1 Merge 2017-07-05 18:22:29 +02:00
J. Duke
371977df55 Added tag jdk8-b56 for changeset ffe6bce5a521 2017-07-05 18:22:17 +02:00
J. Duke
6c1ac6f6bb Merge 2017-07-05 18:22:17 +02:00
J. Duke
5d3d8d0b84 Merge 2017-07-05 18:22:13 +02:00
J. Duke
9b01d7e0bb Merge 2017-07-05 18:22:07 +02:00
J. Duke
44ae1fd86b Merge 2017-07-05 18:22:04 +02:00
J. Duke
b614bef576 Merge 2017-07-05 18:22:00 +02:00
J. Duke
24c9ac5300 Merge 2017-07-05 18:21:57 +02:00
J. Duke
a337e0b71b Merge 2017-07-05 18:21:43 +02:00
J. Duke
cca26ba2b7 Added tag jdk8-b55 for changeset 319f583f66db 2017-07-05 18:21:34 +02:00
David Katleman
564fea623a Merge 2012-10-24 13:14:18 -07:00
David Katleman
a714bf1b0b Merge 2012-10-24 13:11:45 -07:00
David Katleman
655033b76c Merge 2012-10-24 13:11:42 -07:00
Volker Simonis
5b56f65379 7152336: Enable builds on Windows with MinGW/MSYS
Minimal makefile changes to enable building OpenJDK using MSYS on Windows7

Reviewed-by: ohair, tbell
2012-10-23 10:10:49 -07:00
Volker Simonis
9c0b5ee904 7152336: Enable builds on Windows with MinGW/MSYS
Minimal makefile changes to enable building OpenJDK using MSYS on Windows7

Reviewed-by: ohair, tbell
2012-10-23 10:10:39 -07:00
Volker Simonis
906081c12d 7152336: Enable builds on Windows with MinGW/MSYS
Minimal makefile changes to enable building OpenJDK using MSYS on Windows7

Reviewed-by: ohair, tbell
2012-10-23 10:10:23 -07:00
Keith McGuigan
9322a179db 8001225: Disable jdk regression test java/lang/System/Versions.java until jdk's classfile version code is updated
Exclude java/lang/System/Versions.java test

Reviewed-by: sspitsyn, coleenp
2012-10-22 20:12:19 -04:00
Christian Thalinger
01d0ba69ce 8000989: smaller code changes to make future JSR 292 backports easier
Reviewed-by: jrose
2012-10-19 17:04:35 -07:00
Alejandro Murillo
65c322fa70 Added tag hs25-b06 for changeset 57dfd29e4742 2012-10-19 11:03:04 -07:00
Alejandro Murillo
639aa5d99f Merge 2012-10-19 11:03:04 -07:00
David Katleman
8bb18682d4 Added tag jdk8-b61 for changeset 539f9d08a9e5 2012-10-18 11:09:45 -07:00
David Katleman
d9aab5025e Added tag jdk8-b61 for changeset 1a8b3b760f60 2012-10-18 11:09:00 -07:00
David Katleman
4dae92ce29 Added tag jdk8-b61 for changeset 3d833bc526da 2012-10-18 11:08:36 -07:00
David Katleman
0f95eb5efc Added tag jdk8-b61 for changeset 877dd5308e32 2012-10-18 11:08:30 -07:00
David Katleman
3e188b4775 Added tag jdk8-b61 for changeset 929432f0c3b6 2012-10-18 11:08:05 -07:00
David Katleman
c7df814ec7 Added tag jdk8-b61 for changeset e4251351a6dd 2012-10-18 11:07:46 -07:00
David Katleman
f88b8fb20f Added tag jdk8-b61 for changeset 0623a2cf29df 2012-10-18 11:07:40 -07:00
Coleen Phillimore
b1c7936406 Merge 2012-10-18 12:29:56 -04:00
Jon Masamitsu
ea25b80875 Merge 2012-10-17 13:59:57 -07:00
Nils Loodin
953bec36ab 8000617: It should be possible to allocate memory without the VM dying
Reviewed-by: coleenp, kamg
2012-10-17 17:36:48 +02:00
John Cuthbertson
9abdcd4a3c 8000831: Heap verification output incorrect/incomplete
Restore non-silent output of heap verification.

Reviewed-by: ysr, brutisso, jmasa
2012-10-15 10:02:42 -07:00
Alejandro Murillo
515f1281e1 8000834: new hotspot build - hs25-b06
Reviewed-by: jcoomes
2012-10-12 14:06:27 -07:00
Alejandro Murillo
d586b5d037 Added tag hs25-b05 for changeset 29bfe6c53630 2012-10-12 13:55:53 -07:00
Alejandro Murillo
62bcdf7ecd Merge 2012-10-12 13:55:52 -07:00
Gary Collins
3a32124e5c Merge 2012-10-12 11:31:27 -07:00
Gary Collins
ad3844358d Merge 2012-10-12 10:49:39 -07:00
Vladimir Kozlov
5f132a5ec3 Merge 2012-10-12 09:22:52 -07:00
Lana Steuck
05990a73d8 Merge 2012-10-11 17:00:54 -07:00
Lana Steuck
967c2d5685 Merge 2012-10-11 16:59:50 -07:00
Lana Steuck
7a8796bd49 Merge 2012-10-11 16:57:31 -07:00
Christian Thalinger
222b2457ed 8000740: remove LinkWellKnownClasses
Reviewed-by: kvn, jrose
2012-10-11 14:46:20 -07:00
Jiangli Zhou
7757ae0cbf 8000459: assert(java_lang_String::is_instance(entry)) failure with various mlvm tests
Remove unneeded assert.

Reviewed-by: sspitsyn, coleenp
2012-10-11 14:36:46 -04:00
David Katleman
7724283600 Added tag jdk8-b60 for changeset e8ce51f159dd 2012-10-11 09:50:52 -07:00
David Katleman
dd1899ba62 Added tag jdk8-b60 for changeset fd85bb97232e 2012-10-11 09:50:14 -07:00
David Katleman
7778b7d006 Added tag jdk8-b60 for changeset ad9498bbcc27 2012-10-11 09:49:47 -07:00
David Katleman
6380aca7b2 Added tag jdk8-b60 for changeset 77de918f1de3 2012-10-11 09:49:41 -07:00
David Katleman
2f003be07e Added tag jdk8-b60 for changeset 2805a3e211f3 2012-10-11 09:49:18 -07:00
David Katleman
afe29376fe Added tag jdk8-b60 for changeset 708d4b770214 2012-10-11 09:49:03 -07:00
David Katleman
d78b757097 Added tag jdk8-b60 for changeset a11476021d05 2012-10-11 09:48:55 -07:00
Roland Westrelin
74ea92ce42 8000753: compiler/6912517 crashes on 64bit sparc with compressed oops off
Code generated by c1 for getClass intrinsic broken when klass field is loaded on 64bit with compressed klass off.

Reviewed-by: kvn
2012-10-11 18:21:01 +02:00
David Katleman
257d0ce0f2 Merge 2012-10-10 14:47:07 -07:00
Joseph Provino
c5eaaaa070 7189254: Change makefiles for more flexibility to override defaults
Change makefiles so that targets and parameters can be overridden by alternate makefiles.

Reviewed-by: dholmes, coleenp
2012-10-10 14:35:58 -04:00
Goetz Lindenmaier
f28ac57f94 8000592: Improve adlc usability
Several changes to adlc to improve its usability

Reviewed-by: kvn
2012-10-09 16:09:31 -07:00
Stefan Karlsson
724e5ecfb3 8000659: NPG: ClassCastExceptions are unexpectedly thrown when testing nashorn
Treat the oops in invoke_method_table() as strong roots when ClassUnloading is enabled.

Reviewed-by: kamg, coleenp
2012-10-09 22:12:25 +02:00
Vladimir Ivanov
6674423523 7199654: Remove LoadUI2LNode
Removed LoadUI2L node from Ideal nodes, use match rule in .ad files instead.

Reviewed-by: kvn
2012-10-09 12:40:05 -07:00
Mikael Vidstedt
769dd50182 7197424: update copyright year to match last edit in jdk8 hotspot repository
Update copyright year to 2012 for relevant files

Reviewed-by: dholmes, coleenp
2012-10-09 10:09:34 -07:00
Roland Westrelin
61eb5a0549 7054512: Compress class pointers after perm gen removal
Support of compress class pointers in the compilers.

Reviewed-by: kvn, twisti
2012-10-09 10:11:38 +02:00
Mark Wielaard
ec0a9ee8a6 8000622: Forgot to hg add and check in test for JDK-7170638
Add the test

Reviewed-by: coleenp, kamg
2012-10-09 02:42:16 -04:00
David Holmes
183fdef181 8000461: Top level build doesn't pass OPENJDK=true through to the hotspot build
Add OPENJDK to the COMMON_BUILD_ARGUMENTS

Reviewed-by: tbell
2012-10-09 02:08:54 -04:00
Rickard Bäckman
25e07fb041 Merge 2012-10-09 07:41:27 +02:00
Christian Thalinger
7162ad011c 8000263: JSR 292: signature types may appear to be unloaded
Reviewed-by: kvn, jrose
2012-10-08 17:04:00 -07:00
Yumin Qi
92e727c8e4 Merge 2012-10-08 16:59:44 -07:00
Yumin Qi
b2cf8c4cb0 8000332: SA ClassDump throws exception after permgen removal
In ClassWrite.writeFields(), fields count was mistakenly set to fields length which overflow the array index. Also removed a file which is leftover from 6879063 changeset.

Reviewed-by: coleenp, sspitsyn
2012-10-08 16:48:52 -07:00
Lana Steuck
babd792880 Merge 2012-10-08 15:40:27 -07:00
Lana Steuck
703702096b Merge 2012-10-08 15:39:33 -07:00
Lana Steuck
e99b3f4ffe Merge 2012-10-08 15:38:19 -07:00
Lana Steuck
e86fa474a7 Merge 2012-10-08 15:37:37 -07:00
Lana Steuck
6bf8610fc8 Merge 2012-10-08 15:36:02 -07:00
Vladimir Ivanov
b1d745897b 8000313: C2 should use jlong for 64bit values
Replace all occurrences of long with jlong in C2 code.

Reviewed-by: kvn, twisti
2012-10-08 13:02:13 -07:00
Mikael Gerdin
845106af13 8000358: G1: metaspace information not printed in PrintHeapAtGC output nor in hs_err file
Missing call to MetaspaceAux::print_on() in G1CollectedHeap::print_on().

Reviewed-by: azeemj, jmasa
2012-10-08 09:12:31 -07:00
Mark Wielaard
959d0a9ebb 7170638: Use DTRACE_PROBE[N] in JNI Set and SetStatic Field
Don't use HS_DTRACE_PROBE_CDECL_N and HS_DTRACE_PROBE_N directly.

Reviewed-by: coleenp, kamg, dholmes, sspitsyn
2012-10-08 09:18:54 -04:00
Weijun Wang
a5312cbadb 7201053: Krb5LoginModule shows NPE when both useTicketCache and storeKey are set to true
Reviewed-by: mullan
2012-10-08 10:42:43 +08:00
Alan Bateman
18688c3a56 8000354: (props) Properties.storeToXML/loadFromXML need to allow for alternative implementations
Reviewed-by: mchung, forax
2012-10-06 13:56:16 +01:00
Maurizio Cimadamore
319150fde0 7177386: Add attribution support for method references
Add type-checking/lookup routines for method references

Reviewed-by: jjg, dlsmith
2012-10-06 10:35:38 +01:00
Kaushik Srenevasan
fd15ca5e44 7127708: G1: change task num types from int to uint in concurrent mark
Change the type of various task num fields, parameters etc to unsigned and rename them to be more consistent with the other collectors. Code changes were also reviewed by Vitaly Davidovich.

Reviewed-by: johnc
2012-10-06 01:17:44 -07:00
Vladimir Ivanov
2467d2f247 8000485: Hotspot build fails in Solaris Studio IDE when building dtrace
Prepend '.' to the existing native library path

Reviewed-by: kvn, sspitsyn
2012-10-05 19:44:49 -07:00
Vladimir Ivanov
81be4b2f15 8000232: NPG: SIGSEGV in Dependencies::DepStream::check_klass_dependency on solaris-x64
Move decoding into Dependencies::DepStream::argument, so no caller could see encoded context value (NULL) anymore.

Reviewed-by: twisti, kvn
2012-10-05 19:29:29 -07:00
Vladimir Ivanov
822deb6ee6 7177003: C1: LogCompilation support
Add LogCompilation support in C1 - both client and tiered mode.

Reviewed-by: twisti, kvn
2012-10-05 18:57:10 -07:00
Bhavesh Patel
83042670bb 4696488: javadoc doesn't handle UNC paths for destination directory
Reviewed-by: jjg
2012-10-05 14:21:09 -07:00
Bhavesh Patel
8949fccef9 7068595: html files in class-use dir do not get loaded correctly when Frames link is clicked
Reviewed-by: jjg
2012-10-05 14:16:32 -07:00
Bhavesh Patel
b32f33b69a 7132631: The help-doc.html generates an invalid link to constant-values.html
Reviewed-by: jjg
2012-10-05 14:13:47 -07:00
Alejandro Murillo
9e9db7f831 8000498: new hotspot build - hs25-b05
Reviewed-by: jcoomes
2012-10-05 13:37:08 -07:00
Alejandro Murillo
10f5782aff Added tag hs25-b04 for changeset 21b044417a2e 2012-10-05 13:28:17 -07:00
Alejandro Murillo
81a35920fd Merge 2012-10-05 13:28:16 -07:00
Vladimir Kozlov
85e21b3a30 Merge 2012-10-05 10:03:56 -07:00
Naoto Sato
eeac68872b 7198834: HOST Adapter: one extra empty space in the end of the pattern string
Reviewed-by: okutsu
2012-10-05 09:57:50 -07:00
Jaroslav Bachorik
496da3014d 7195779: javax/management/remote/mandatory/threads/ExecutorTest.java fails intermittently, NPE in tie class
Reviewed-by: alanb, coffeys
2012-10-05 15:08:10 +01:00
Maurizio Cimadamore
72f39bf20c 7177385: Add attribution support for lambda expressions
Add support for function descriptor lookup, functional interface inference and lambda expression type-checking

Reviewed-by: jjg, dlsmith
2012-10-05 14:35:24 +01:00
Vadim Pakhnushev
4e6d9a8f7e 8000176: Need automated test for checking scale quality
Reviewed-by: prr, bae
2012-10-05 16:21:01 +04:00
Naoto Sato
0dcbdaafba Merge 2012-10-04 21:05:06 -07:00
Naoto Sato
efea116274 7200119: Collator.getAvailableLocales() doesn't return Locale.US
Reviewed-by: okutsu
2012-10-04 21:03:36 -07:00
David Holmes
5ad6116c61 Merge 2012-10-04 20:09:46 -04:00
David Holmes
363fac131c 7199186: runtime/7194254/Test7194254.java fails - wrong test name on @run
Reviewed-by: kvn, twisti
2012-10-04 19:52:09 -04:00
David Katleman
01465313ff Added tag jdk8-b59 for changeset aded5e617602 2012-10-04 14:36:14 -07:00
David Katleman
ab2c8f811a Added tag jdk8-b59 for changeset 6408a49a3a6b 2012-10-04 14:35:38 -07:00
David Katleman
c12876f991 Added tag jdk8-b59 for changeset 6fa036b39eb9 2012-10-04 14:35:15 -07:00
David Katleman
56e12ecc3a Added tag jdk8-b59 for changeset e31f9b0d349f 2012-10-04 14:35:10 -07:00
David Katleman
a09b38f3e4 Added tag jdk8-b59 for changeset 22fa34424aa9 2012-10-04 14:34:51 -07:00
David Katleman
f67940dd4b Added tag jdk8-b59 for changeset 173d83d9c9d7 2012-10-04 14:34:34 -07:00
David Katleman
447af5923f Added tag jdk8-b59 for changeset ba9e9ff8d8ef 2012-10-04 14:34:31 -07:00
Jon Masamitsu
f33eb9a9bd Merge 2012-10-04 14:01:07 -07:00
Rob McKenna
2102c5a5b6 7184932: Remove the temporary Selector usage in the NIO socket adapters
Reviewed-by: alanb
2012-10-04 19:53:08 +01:00
Jon Masamitsu
4fa0ac5256 7198873: NPG: VM Does not unload classes with UseConcMarkSweepGC
Reviewed-by: johnc, mgerdin, jwilhelm
2012-10-04 10:40:23 -07:00
Naoto Sato
3caba25f6b 7196799: CLDR adapter can not be invoked when region code is specified in Locale
7197573: java/util/Locale/LocaleProviders.sh failed

Reviewed-by: okutsu
2012-10-04 10:04:56 -07:00
John Cuthbertson
ed98ea0a88 8000311: G1: ParallelGCThreads==0 broken
Divide by zero error, if ParallelGCThreads is 0, when adjusting the PLAB size.

Reviewed-by: jmasa, jcoomes
2012-10-04 10:04:13 -07:00
Nils Eliasson
e228ec4078 8000102: Resolve include conflicts
Removing include of c1/c1_runtime.hpp and opto/runtime.hpp from all os-files.

Reviewed-by: kvn
2012-10-04 06:31:07 -07:00
Harold Seigel
284879b3fc 6884973: java -XX:Atomics=2 crashes
Remove buggy experimental option

Reviewed-by: acorn, coleenp
2012-10-04 08:43:14 -04:00
Harold Seigel
5a5c90dd1c 7198519: Broken build, hotspot-rt win USE_PRECOMPILED_HEADER=0
Uncommented out include for sys/stat.h and deleted include statements that were commented out.

Reviewed-by: coleenp, acorn, dholmes
2012-10-04 08:38:06 -04:00
Maurizio Cimadamore
c0e2ed86c1 7177387: Add target-typing support in method context
Add support for deferred types and speculative attribution

Reviewed-by: jjg, dlsmith
2012-10-04 13:04:53 +01:00
Vinnie Ryan
d44a2451e6 Merge 2012-10-04 11:54:16 +01:00
Yuka Kamiya
700a5c6ee0 7201151: Fix Contribution : Java cannot get Windows's IME name correctly
Reviewed-by: okutsu
2012-10-04 18:05:37 +09:00
Yuka Kamiya
64b949310f 7196316: Wrong rounding mode in DecimalFormat after deserialization
Reviewed-by: okutsu
2012-10-04 11:36:22 +09:00
David Katleman
9a3320a64e Merge 2012-10-03 15:31:59 -07:00
Jesper Wilhelmsson
3506d44c57 8000351: Tenuring threshold should be unsigned
Change the flags and variables related to tenuring threshold to be unsigned

Reviewed-by: jmasa, johnc
2012-10-03 20:31:41 +02:00
Oleg Pekhovskiy
ebff918cc7 7171412: awt Choice doesn't fire ItemStateChange when selecting item after select() call
Reviewed-by: art, denis
2012-10-03 21:01:47 +04:00
Jon Masamitsu
88ab075a6d 7199349: NPG: PS: Crash seen in jprt
Reviewed-by: johnc
2012-10-03 08:08:52 -07:00
Dan Xu
684361a3d9 6910472: Typo in : java.io.ObjectOutputStream.reset() "refered"
Reviewed-by: dholmes, alanb
2012-10-03 09:03:53 +01:00
Yuka Kamiya
c3026d4a59 7104012: AIOOBE from RuleBasedBreakIterator.lookupState for some suppl. chars
Reviewed-by: okutsu
2012-10-03 15:11:28 +09:00
Vladimir Kozlov
8d8d00ff00 7199742: A lot of C2 OSR compilations of the same method's bci
Don't clone head of OSR loop.

Reviewed-by: jrose, twisti
2012-10-02 14:49:21 -07:00
Vladimir Kozlov
e8332c76e9 7201026: add vector for shift count
Add generation of vectors for scalar shift count.

Reviewed-by: roland, twisti, dlong
2012-10-02 12:25:13 -07:00
Alan Bateman
30d429cc25 8000268: sun/security/provider/X509Factory/BigCRL.java failing on Linux 32-bit
Reviewed-by: mullan
2012-10-02 12:23:16 +01:00
Paul Sandoz
25c830b9d5 7197642: (sl) ServiceLoader.load(null) doesn't throw NPE
Reviewed-by: alanb
2012-10-02 10:36:05 +01:00
Olivier Lagneau
b6ea800f9b 7050528: Improve performance of java.text.DecimalFormat.format() call stack
Reviewed-by: darcy
2012-10-02 10:11:57 +01:00
Christian Thalinger
59b8489a0c 7200949: JSR 292: rubybench/bench/time/bench_base64.rb fails with jruby.jar not on boot class path
Reviewed-by: jrose, kvn
2012-10-01 14:50:10 -07:00
Clemens Eisserer
3d880fa194 7188093: closed/sun/java2d/pipe/ScaleQualityTest.java fails
Reviewed-by: prr, flar
2012-10-01 13:07:54 -07:00
Alan Bateman
9b8e06e699 8000269: Cleanup javadoc warnings
Reviewed-by: lancea, darcy, ulfzibis, iris, naoto, dholmes
2012-10-01 15:36:57 +01:00
Stefan Karlsson
7ccbee4177 8000228: Missing call to cr() when printing entry_point in nmethod, in os::print_location
Reviewed-by: brutisso, neliasso
2012-10-01 13:29:11 +02:00
Stefan Karlsson
3e967d8f8d 8000227: [obj|type]ArrayKlass::oop_print_on prints one line to tty instead of the provided output stream
Reviewed-by: brutisso, sla, jmasa, coleenp
2012-10-01 13:29:11 +02:00
Kevin Walls
80d5f4b66d 7200145: runtime/7196045/Test7196045.java fails with No class provided for `main'
Reviewed-by: dholmes, dsamersoff
2012-09-30 23:24:12 +01:00
Jan Lahoda
ed2bca8140 7198582: (java) Minor refactor of JavacParser
Reviewed-by: jjg, ksrini
2012-09-29 09:00:58 -07:00
Dmitry Samersoff
8af0bcb7fe 7186723: TEST_BUG: Race condition in sun/management/jmxremote/startstop/JMXStartStopTest.sh
Make test self-terminating and independent to cygwin/mks kill behaviour

Reviewed-by: sspitsyn, alanb
2012-09-29 15:44:06 +04:00
Coleen Phillimore
28047d6a0f 8000213: NPG: Should have renamed arrayKlass and typeArrayKlass
Capitalize these metadata types (and objArrayKlass)

Reviewed-by: stefank, twisti, kvn
2012-09-29 06:40:00 -04:00
Lana Steuck
b3aacc5029 Merge 2012-09-28 14:57:31 -07:00
Lana Steuck
4156261cf3 Merge 2012-09-28 14:56:38 -07:00
Alejandro Murillo
9972f3d338 8000251: new hotspot build - hs25-b04
Reviewed-by: jcoomes
2012-09-28 14:36:20 -07:00
Alejandro Murillo
10e48f968d Added tag hs25-b03 for changeset 4d2ca6fb1285 2012-09-28 13:39:41 -07:00
Lana Steuck
80b413a5b5 Merge 2012-09-28 11:45:43 -07:00
Joel Borggrén-Franck
1c489c5ec5 7199925: Separate compilation breaks check that elements have a default for the containing annotation
Reviewed-by: jjg, mcimadamore
2012-09-28 11:39:29 -07:00
Lana Steuck
9c0a331d78 Merge 2012-09-28 10:54:12 -07:00
Maurizio Cimadamore
8fbd614bf3 8000241: langtools doesn't build
Bad merge with langtools tip caused build glitch

Reviewed-by: jjg
2012-09-28 18:50:40 +01:00
Vladimir Kozlov
fbd1f6e3be Merge 2012-09-28 10:16:29 -07:00
Maurizio Cimadamore
7f58c7c7ad 8000233: Fix issues in recent push
Forgot to incorporate review comments in pushed changesets

Reviewed-by: jjg
2012-09-28 16:56:53 +01:00
Stefan Karlsson
ddd6138b95 8000230: Change os::print_location to be more descriptive when a location is pointing into an object
Reviewed-by: mgerdin, twisti
2012-09-28 15:34:32 +02:00
Stefan Karlsson
74f09797c9 Merge 2012-10-01 11:07:31 +02:00
Stefan Karlsson
ebb8d12592 Merge 2012-09-28 14:14:25 +02:00
Alexander Scherbatiy
01025ec99e 7197619: Using modifiers for the dead key detection on Windows
Reviewed-by: bagiras, leonidr
2012-09-28 14:54:04 +04:00
Dan Xu
f41a30cb5c 6950237: Test java/nio/file/Path/CopyAndMove.java does not work correctly when test dir in on VFAT
Reviewed-by: alanb
2012-09-28 11:14:20 +01:00
Weijun Wang
7ffcd7343f 7200682: TEST_BUG: keytool/autotest.sh still has problems with libsoftokn.so
Reviewed-by: alanb, smarks
2012-09-28 17:15:48 +08:00
Yuka Kamiya
5a3a2dc308 7069824: Support for BCP47 locale matching
Reviewed-by: naoto, okutsu
2012-09-28 14:14:26 +09:00
Rob McKenna
152b0d6143 7199219: Proxy-Connection headers set incorrectly when a HttpClient is retrieved from the Keep Alive Cache
Reviewed-by: chegar
2012-09-28 04:39:02 +01:00
Vladimir Kozlov
d560ac115b 7198084: NPG: distance is too big for short branches in test_invocation_counter_for_mdp()
Use long branches in test_invocation_counter_for_mdp()

Reviewed-by: twisti
2012-09-27 15:49:48 -07:00
John Cuthbertson
157b8fa41b 7200261: G1: Liveness counting inconsistencies during marking verification
The clipping code in the routine that sets the bits for a range of cards, in the liveness accounting verification code was incorrect. It set all the bits in the card bitmap from the given starting index which would lead to spurious marking verification failures.

Reviewed-by: brutisso, jwilhelm, jmasa
2012-09-27 15:44:01 -07:00
Rob McKenna
80d3fce897 7199862: Make sure that a connection is still alive when retrieved from KeepAliveCache in certain cases
Reviewed-by: chegar
2012-09-27 22:35:07 +01:00
David Katleman
20911d0ab6 Added tag jdk8-b58 for changeset a54f29461808 2012-09-27 11:26:04 -07:00
David Katleman
575a9f82e2 Added tag jdk8-b58 for changeset 17beb247c83a 2012-09-27 11:25:26 -07:00
David Katleman
d719297988 Added tag jdk8-b58 for changeset e033f1ff319a 2012-09-27 11:25:01 -07:00
David Katleman
b62f8968fe Added tag jdk8-b58 for changeset 63e6a7c76188 2012-09-27 11:24:55 -07:00
David Katleman
291e3f0b9a Added tag jdk8-b58 for changeset f75a1b3efb69 2012-09-27 11:24:35 -07:00
David Katleman
6aeb6eaccb Added tag jdk8-b58 for changeset 84521b7fdb66 2012-09-27 11:24:19 -07:00
David Katleman
ad23559529 Added tag jdk8-b58 for changeset fc1beab39b2a 2012-09-27 11:24:12 -07:00
Andrew John Hughes
0fa038b4e0 7201205: Add Makefile configuration option to build with unlimited crypto in OpenJDK
Allow OpenJDK to use the unlimited crypto policy.

Reviewed-by: wetmore, ohair
2012-09-27 17:55:10 +01:00
Bharadwaj Yadavalli
d5d2e78faa 7193318: C2: remove number of inputs requirement from Node's new operator
Deleted placement new operator of Node - node(size_t, Compile *, int).

Reviewed-by: kvn, twisti
2012-09-27 09:38:42 -07:00
Dmitry Samersoff
47a8760b93 Merge 2012-09-27 20:22:57 +04:00
Alan Bateman
903c4c0c7f 7200742: (se) Selector.select does not block when starting Coherence (sol)
Reviewed-by: chegar
2012-09-27 10:30:56 +01:00
David Katleman
cec06a0b40 Merge 2012-09-26 22:22:51 -07:00
Xue-Lei Andrew Fan
9c642ad1d2 7200295: CertificateRequest message is wrapping when using large numbers of Certs
Reviewed-by: wetmore
2012-09-26 21:05:40 -07:00
Alejandro Murillo
7be853ba86 Merge 2012-09-26 13:04:06 -07:00
Alexander Scherbatiy
8bb2411d34 7124515: [macosx] Test fail like 6366126 (ArrayIndexOutOfBoundException pressing ENTER after removing items)
Reviewed-by: serb, anthony
2012-09-26 18:59:12 +04:00
Maurizio Cimadamore
5f629e503c 7188968: New instance creation expression using diamond is checked twice
Unify method and constructor check logic

Reviewed-by: jjg
2012-09-26 14:22:41 +01:00
Vladimir Kozlov
973fdc81a1 7200264: 7192963 changes disabled shift vectors
Replaced is_vector_use() call with explicit check for vector shift's count.

Reviewed-by: twisti, roland, dlong, vlivanov
2012-09-25 15:48:17 -07:00
Jonathan Gibbons
6a310eb049 7196464: upgrade JavaCompiler.shouldStopPolicy to accomodate policies in face of error and no error
Reviewed-by: mcimadamore
2012-09-25 13:11:05 -07:00
Vicente Romero
c2e8d5a017 7193657: provide internal ArrayUtils class to simplify common usage of arrays in javac
Reviewed-by: mcimadamore, jjg
2012-09-25 13:06:58 -07:00
Valerie Peng
6f6f1d3bea 7199939: DSA 576 and 640 bit keys fail when initializing for No precomputed parameters
Fixed initialize(int, SecureRandom) call to not error out when no precomputed params available.

Reviewed-by: vinnie
2012-09-25 11:31:17 -07:00
Valerie Peng
0733ebe2f2 7199941: test about AES/ECB mode fails
Fixed the problem of field "blockMode" not having correct value for AES algorithms.

Reviewed-by: vinnie
2012-09-25 11:27:42 -07:00
Vladimir Kozlov
9c3545d4fb 7200233: C2: can't use expand rules for vector instruction rules
Added missed _bottom_type set in ArchDesc::defineExpand() and missed vector nodes in MatchRule::is_vector().

Reviewed-by: twisti, roland, dlong
2012-09-25 10:41:15 -07:00
Bengt Rutisson
ceccaf4577 Merge 2012-09-25 18:28:16 +02:00
Jennifer Godinez
5f949b5751 7158350: [macosx] Strange results of SwingUIText printing
Reviewed-by: bae, prr
2012-09-25 09:18:27 -07:00
Jon Masamitsu
1ea36e2324 7200615: NPG: optimized VM build is broken
Reviewed-by: kvn
2012-09-25 07:05:55 -07:00
Bengt Rutisson
fcae0353d2 7200470: KeepAliveClosure not needed in CodeCache::do_unloading
Removed the unused keep_alive parameter

Reviewed-by: stefank, dholmes, kamg, coleenp
2012-09-25 14:58:12 +02:00
Fredrik Ohrstrom
70f397b4a2 7200065: Cross-compilation changes to support the new-build
Reviewed-by: dholmes, ohair
2012-09-25 07:58:42 -04:00
Maurizio Cimadamore
f49f25c60d 7177306: Regression: unchecked method call does not erase return type
Spurious extra call to Attr.checkMethod when method call is unchecked

Reviewed-by: jjg, dlsmith
2012-09-25 11:56:46 +01:00
Maurizio Cimadamore
d4c5fca16a 7175433: Inference cleanup: add helper class to handle inference variables
Add class to handle inference variables instantiation and associated info

Reviewed-by: jjg, dlsmith
2012-09-25 11:55:34 +01:00
Maurizio Cimadamore
07155682a1 7194586: Add back-end support for invokedynamic
Add support for invokedynamic bytecode instruction; includes suppot for generation of all related classfile attributes

Reviewed-by: jjg
2012-09-25 11:53:18 +01:00
Maurizio Cimadamore
8be3009d08 7193913: Cleanup Resolve.findMethod
Refactor method lookup logic in Resolve.findMethod

Reviewed-by: jjg
2012-09-25 11:52:37 +01:00
Lana Steuck
8cdc205b73 Merge 2012-09-24 21:11:11 -07:00
Lana Steuck
74be91da45 Merge 2012-09-24 21:10:24 -07:00
Yumin Qi
d540138a54 Merge 2012-09-24 20:04:19 -07:00
Vladimir Danushevsky
2e051041e3 Merge 2012-09-24 19:00:55 -04:00
Jonathan Gibbons
55ec94e302 7196462: JavacProcessingEnvironment should tolerate BasicJavacTask
Reviewed-by: mcimadamore
2012-09-24 14:04:34 -07:00
Yumin Qi
22544e7a7c 6879063: SA should use hsdis for disassembly
We should in SA to use hsdis for it like the JVM does to replace the current java based disassembler.

Reviewed-by: twisti, jrose, sla
2012-09-24 12:44:00 -07:00
Sergey Bylokhov
08c6d03264 7160627: [macosx] TextArea has wrong initial size
7124213: [macosx] pack() does ignore size of a component; doesn't on the other platforms

Reviewed-by: anthony, art
2012-09-24 21:33:41 +04:00
Leonid Romanov
914bc61d4b 7179349: [macosx] Java processes on Mac should not use default Apple icon
Reviewed-by: anthony
2012-09-24 18:24:30 +04:00
Leonid Romanov
0ea3bcf8a8 7124239: [macosx] sun.awt.SunToolkit.InfiniteLoop exception in realSync called from SwingTestHelper
Reviewed-by: anthony
2012-09-24 15:25:17 +04:00
Alejandro Murillo
d6538dc298 7200236: new hotspot build - hs25-b03
Reviewed-by: jcoomes
2012-09-21 14:39:56 -07:00
Alejandro Murillo
38c34d56b0 Added tag hs25-b02 for changeset b3b50cc0cb4d 2012-09-21 14:02:58 -07:00
Alejandro Murillo
6f3e1a0593 Merge 2012-09-21 14:02:57 -07:00
John Coomes
8cc4cb76b5 Merge 2012-09-21 13:14:22 -07:00
Kelly O'Hair
89f1772d07 7191703: jprt cannot build jdk on MacOSX
Reviewed-by: anthony
2012-09-21 12:22:52 -07:00
Alan Bateman
360754471c 7199551: (bf) CharBuffer.append(CharSequence) throws BufferOverflowException for read-only buffer
Reviewed-by: iris, dxu, chegar
2012-09-21 15:39:10 +01:00
Alexander Scherbatiy
aca74a151c 7199180: [macosx] Dead keys handling for input methods
Reviewed-by: kizune, anthony
2012-09-21 13:48:06 +04:00
Nils Loodin
8bc04a0b28 7200092: Make NMT a bit friendlier to work with
Reviewed-by: kvn, ysr, azeemj
2012-09-21 10:56:28 +02:00
John Coomes
1743a11163 7199082: write warning messages to stderr
Reviewed-by: ysr, dholmes, sla
2012-09-20 16:27:51 -07:00
Jon Masamitsu
5721eadb16 Merge 2012-09-20 13:49:27 -07:00
David Katleman
73016372e3 Added tag jdk8-b57 for changeset a4e282e892b6 2012-09-20 13:45:59 -07:00
David Katleman
10d4078b95 Added tag jdk8-b57 for changeset ad1e86451b3f 2012-09-20 13:45:18 -07:00
David Katleman
685f6679fe Added tag jdk8-b57 for changeset 8ac23c0c609c 2012-09-20 13:44:53 -07:00
David Katleman
1672690b20 Added tag jdk8-b57 for changeset 61be07ec4655 2012-09-20 13:44:47 -07:00
David Katleman
1f784d2ce5 Added tag jdk8-b57 for changeset 386342128efe 2012-09-20 13:44:28 -07:00
David Katleman
6da011c932 Added tag jdk8-b57 for changeset 9674d32cdc2a 2012-09-20 13:44:07 -07:00
David Katleman
638632979d Added tag jdk8-b57 for changeset b3dd9df01aa0 2012-09-20 13:44:03 -07:00
Kumar Srinivasan
71637b6902 7199614: (pack200) remove unused file
Reviewed-by: alanb
2012-09-20 13:01:01 -07:00
Jon Masamitsu
f6cc90e927 7199923: NPG: tools/javac/T7093325.java timeout
Reviewed-by: stefank, coleenp, kvn
2012-09-20 12:18:23 -07:00
John Cuthbertson
54412491e8 7190666: G1: assert(_unused == 0) failed: Inconsistency in PLAB stats
Reset the fields in ParGCAllocBuffer, that are used for accumulating values for the ResizePLAB sensors in PLABStats, to zero after flushing the values to the PLABStats fields. Flush PLABStats values only when retiring the final allocation buffers prior to disposing of a G1ParScanThreadState object, rather than when retiring every allocation buffer.

Reviewed-by: jwilhelm, jmasa, ysr
2012-09-20 09:52:56 -07:00
Vladislav Karnaukhov
211c061e3e 7123767: Wrong tooltip location in Multi-Monitor configurations
Reviewed-by: rupashka
2012-09-20 17:55:40 +04:00
Sean Chou
49aa62455c 7194184: JColorChooser swatch cannot accessed from keyboard
Reviewed-by: rupashka, alexsch
2012-09-20 17:39:47 +04:00
John Zavgren
374a36e20e 7193520: Removed references to Linux kernel version 2.2
Linux kernel version 2.2 isn't supported anymore.

Reviewed-by: chegar, dsamersoff, alanb
2012-09-20 09:36:55 -04:00
Kevin Walls
d37f7326ce Merge 2012-09-20 03:49:15 -07:00
John Cuthbertson
e78edc79b7 7193946: Move warnings associated with UseMemSetInBOT flag
The warnings associated with the UseMemSetInBOT flag are duplicated in CMS and G1. The separate warnings have been removed and single instance of the warning has been placed in a common location.

Reviewed-by: brutisso, ysr
2012-09-19 15:48:02 -07:00
David Katleman
1f5caa619e Merge 2012-09-19 15:47:06 -07:00
David Katleman
d08e6eb258 Merge 2012-09-19 15:46:32 -07:00
David Katleman
5221180d4e Merge 2012-09-19 15:45:53 -07:00
David Katleman
84e2bbbb3c Merge 2012-09-19 15:45:48 -07:00
David Katleman
ffd1ab1498 Merge 2012-09-19 15:44:50 -07:00
David Katleman
3390fc82dd Merge 2012-09-19 15:44:47 -07:00
Bill Pittore
8e0655095b 7195372: Wrong copyright in new files
Fixed copyrights

Reviewed-by: dholmes
2012-09-19 17:22:49 -04:00
John Coomes
df3f6e087e Merge 2012-09-19 16:18:55 -04:00
Lana Steuck
15bdd03998 Merge 2012-09-19 12:41:54 -07:00
Lana Steuck
b2e9ddaa89 Merge 2012-09-19 12:38:53 -07:00
Brandon Mitchell
6573cbf346 7016955: G1: remove the is_zeroed parameter from the HeapRegion constructor
The is_zeroed parameter is no longer used and so can be removed.

Reviewed-by: johnc, jmasa, brutisso
2012-09-19 08:48:10 -07:00
Yumin Qi
124ddb9b47 Merge 2012-09-19 08:41:30 -07:00
Kevin Walls
1c502686ea 7196045: Possible JVM deadlock in ThreadTimesClosure when using HotspotInternal non-public API
Reviewed-by: sspitsyn, dholmes
2012-09-19 15:24:32 +01:00
Chris Hegarty
4752833181 7199500: Minor typo in AbstractStringBuilder.java header
Reviewed-by: coffeys
2012-09-19 14:55:40 +01:00
Jim Gish
ae79d50df2 4722265: (spec str) StringBuffer.ensureCapacity() should mention that capacity is mutable
Add usage note to AbstractStringBuilder ensureCapacity()

Reviewed-by: mduigou, dholmes, chegar
2012-09-19 08:52:21 -04:00
David Holmes
921375e418 7199410: Remove files that were omitted from 7130909 changeset
Reviewed-by: ohair
2012-09-19 04:26:50 -04:00
John Coomes
d8089b90e5 Merge 2012-09-18 19:44:39 -04:00
Mandy Chung
8159d98a99 7198070: Eliminate static dependency from JMX to java.beans.ConstructorProperties
Reviewed-by: alanb
2012-09-18 15:06:14 -07:00
Dan Xu
8831f6fde2 7195933: There is incorrect link to "Info-ZIP Application Note 970311" in doc page of Package java.util.zip
Correct a java doc link in java.util.zip package page

Reviewed-by: chegar, lancea, sherman
2012-09-18 14:45:09 -07:00
Jon Masamitsu
cf5f4f736f 7197557: NPG: nsk/sysdict/vm/stress/chain/chain004 hangs intermittently
Reviewed-by: johnc, ysr
2012-09-18 14:15:06 -07:00
Alan Bateman
3b337824c0 7190273: Deprecate com.sun.security.auth.callback.DialogCallbackHandler
Reviewed-by: mullan
2012-09-18 21:21:10 +01:00
Kelly O'Hair
f65906c1bc 7198329: Add $(sort) to object files used in links makes binarties more consistent
Reviewed-by: dholmes, tbell, erikj, ihse, ohrstrom
2012-09-18 13:15:28 -07:00
Kelly O'Hair
d5cd2350a8 7198325: Fix more $(sort) issues on lnk commands in makefiles, making binaries more consistent
7130909: Add a more general mechanism for customizing the build logic

Reviewed-by: dholmes, tbell, erikj, ihse, ohrstrom
2012-09-18 12:16:37 -07:00
Zhengyu Gu
b9f111d166 Merge 2012-09-18 11:37:26 -07:00
Kelly O'Hair
25cc8761f1 7197849: Update new build-infra makefiles
Reviewed-by: ihse, erikj, ohrstrom, tbell
2012-09-18 11:29:51 -07:00
Kelly O'Hair
075c55b713 7197849: Update new build-infra makefiles
Reviewed-by: ihse, erikj, ohrstrom, tbell
2012-09-18 11:29:44 -07:00
Kelly O'Hair
28f46567e4 7197849: Update new build-infra makefiles
Reviewed-by: ihse, erikj, ohrstrom, tbell
2012-09-18 11:29:37 -07:00
Kelly O'Hair
aa6143b6c3 7197849: Update new build-infra makefiles
Reviewed-by: ihse, erikj, ohrstrom, tbell
2012-09-18 11:29:31 -07:00
Kelly O'Hair
c363db8ed0 7197849: Update new build-infra makefiles
Reviewed-by: ihse, erikj, ohrstrom, tbell
2012-09-18 11:29:24 -07:00
Kelly O'Hair
228c21635b 7197849: Update new build-infra makefiles
Reviewed-by: ihse, erikj, ohrstrom, tbell
2012-09-18 11:29:16 -07:00
Mike Duigou
1e3c417915 7199249: TEST_BUG : Add /othervm to Collisions.java @run main with -D definitions
Reviewed-by: alanb
2012-09-18 11:04:12 -07:00
Yiming Wang
6b6dde5a11 7198984: Add java/text/Bidi/Bug6665028.java to ProblemList.txt
Reviewed-by: alanb
2012-09-18 10:34:36 -07:00
Kelly O'Hair
b74620c703 Merge 2012-09-18 10:25:20 -07:00
Serguei Spitsyn
3236415bda 7191786: retransformClasses() does not pass in LocalVariableTypeTable of a method
JVMTI REtruncformClasses must support LocalVariableTypeTable attribute

Reviewed-by: dcubed, dsamersoff, rbackman
2012-09-18 10:10:43 -07:00
Xue-Lei Andrew Fan
b8e234fb52 7199066: Typo in method name
Reviewed-by: mullan
2012-09-18 06:51:02 -07:00
Konstantin Shefov
67cc344382 7190587: Open source and jtreg'ify JAWT regression test
Reviewed-by: anthony, omajid
2012-09-18 17:38:40 +04:00
Dan Xu
cd25bf4b6e 7142919: TEST_BUG: java/nio/channels/AsyncCloseAndInterrupt.java failing intermittently [sol11]
Reviewed-by: alanb
2012-09-18 13:14:49 +01:00
Vinnie Ryan
79b3216615 7198901: correct the field size check when decoding a point on ECC curve
Reviewed-by: xuelei
2012-09-18 11:08:48 +01:00
Weijun Wang
89a8feeaff 7198871: cleanup security tests in problem lists with no CR attached
Reviewed-by: alanb
2012-09-18 17:38:43 +08:00
Zhengyu Gu
fb2076c572 7188594: Print statistic collected by NMT with VM flag
Print out statistics of collected NMT data if it is on at VM exits

Reviewed-by: kvn, coleenp, twisti
2012-09-17 16:37:26 -04:00
Zhengyu Gu
3276deb50c Merge 2012-09-17 13:34:07 -07:00
Magnus Ihse Bursie
b2b4d40c73 7172012: Make test-in-build an option (Queens)
Reviewed-by: ohair, dholmes
2012-09-17 11:46:25 -07:00
Mike Duigou
25570f8d69 7198988: re-order paramaters for Collision.java @run
Reviewed-by: alanb
2012-09-17 11:36:10 -07:00
Zhengyu Gu
afd497eecc 7190089: NMT ON: NMT failed assertion on thread's stack base address
Solaris only, record stack info to NMT after stack size adjustment was made for primordial threads

Reviewed-by: kvn, acorn, coleenp
2012-09-17 10:20:04 -04:00
Marco Dinacci
6dc21336ea 7160951: ActionListener called twice for JMenuItem using ScreenMenuBar
Reviewed-by: anthony, serb
2012-09-17 17:25:54 +04:00
David Holmes
676c5a2769 Merge 2012-09-17 08:44:19 -04:00
Dmytro Sheyko
48255b9ff3 7194254: jstack reports wrong thread priorities
Reviewed-by: dholmes, sla, fparain
2012-09-17 07:36:31 -04:00
Staffan Larsen
10b80ccca6 7198849: Make javax/management/remote/mandatory/notif/ListenerScaleTest.java less timing sensitive
Reviewed-by: alanb
2012-09-17 12:40:33 +02:00
Weijun Wang
b86fae01ab 7196855: autotest.sh fails on ubuntu because libsoftokn.so not found
Reviewed-by: vinnie
2012-09-17 18:19:16 +08:00
Staffan Larsen
e91b6584eb 7193201: [OS X] The development launcher should be signed and given task_for_pid privileges
Reviewed-by: sspitsyn, nloodin, mgronlun, coleenp
2012-09-17 11:46:19 +02:00
Vadim Pakhnushev
1c8d337aaa 7186799: Regression tests for ImageIO metadata fail on second run
Reviewed-by: prr, bae
2012-09-17 13:44:07 +04:00
Staffan Larsen
1f8baaf6f0 7198846: Add javax/management/remote/mandatory/notif/DiffHBTest.java to ProblemList.txt
Reviewed-by: alanb
2012-09-17 11:27:25 +02:00
Weijun Wang
8e21ad5768 7198205: CloseTest fails on mac
Reviewed-by: alanb, chegar, michaelm
2012-09-17 17:19:50 +08:00
Bengt Rutisson
a08d48f9b1 7198130: G1: PrintReferenceGC output comes out of order
Move the first part of the GC logging, including timestamp, to the start of the GC

Reviewed-by: johnc, jwilhelm
2012-09-17 10:33:13 +02:00
Coleen Phillimore
9a271f468a 7197269: NPG: FollowReferences has no ClassLoader -> Class link to follow
Restore java/lang/ClassLoader.addClass() upcall

Reviewed-by: sspitsyn, dcubed, jmasa
2012-09-17 10:46:59 -04:00
Sean Mullan
227d6c722e 7195409: CertPath/CertPathValidatorTest/KeyParamsInheritanceTest fails with NullPointerException
Reviewed-by: xuelei
2012-09-16 13:29:25 -07:00
Alejandro Murillo
c188598ddd 7198641: new hotspot build - hs25-b02
Reviewed-by: jcoomes
2012-09-14 22:00:41 -07:00
Alejandro Murillo
a13f8a7da1 Added tag hs25-b01 for changeset ab29bec425bb 2012-09-14 21:50:58 -07:00
Alejandro Murillo
b5637a7e2e Merge 2012-09-14 21:50:58 -07:00
John Coomes
d0d065e65c 7198676: NPG: exclude MemoryMXBean tests which assume a perm gen
Reviewed-by: dcubed
2012-09-14 16:04:01 -07:00
John Coomes
62be90fc38 7198162: exclude test MemoryMXBean/LowMemoryTest2.sh
Reviewed-by: alanb, dsamersoff, sspitsyn
2012-09-14 15:02:24 -07:00
Lana Steuck
a60a81b964 Merge 2012-09-14 14:10:01 -07:00
Lana Steuck
fb9f7dee15 Merge 2012-09-14 13:52:30 -07:00
Lana Steuck
e4cc1a46cb Merge 2012-09-14 13:22:59 -07:00
Lana Steuck
2ee6f63c19 Merge 2012-09-14 10:15:05 -07:00
Zhengyu Gu
119c20297b 7198529: NPG: assert with NMT code in Thread destructor
Thread stack's base address can be NULL if it is not started or exited before recording the base

Reviewed-by: kvn, fparain
2012-09-14 12:55:50 -04:00
Jan Lahoda
f1487754e6 7192073: (javac) minor refactoring of tree maker to help IDEs
Reviewed-by: jjg
2012-09-14 09:21:55 -07:00
Vladislav Karnaukhov
ccf7724f51 6994562: Swing classes (both JTextArea and JTextField) don't support caret width tuning
Reviewed-by: rupashka, art
2012-09-14 19:51:14 +04:00
Alexander Scherbatiy
8b54dc6ea9 7196547: [macosx] Implement dead key detection for KeyEvent
Reviewed-by: skovatch, kizune
2012-09-14 15:30:46 +04:00
Alexander Scherbatiy
43349040a2 7197320: [macosx] Full Screen option missing when Window.documentModified
Reviewed-by: anthony
2012-09-14 15:08:54 +04:00
Jonathan Gibbons
ae09b79839 7177970: fix issues in langtools doc comments
Reviewed-by: mcimadamore
2012-09-13 14:29:36 -07:00
David Katleman
8a2b4598e4 Added tag jdk8-b56 for changeset 5b1ac23fe8a0 2012-09-13 13:16:45 -07:00
David Katleman
04d30a320f Added tag jdk8-b56 for changeset 9a3f2acd6f92 2012-09-13 13:16:04 -07:00
David Katleman
9c52f1e17a Added tag jdk8-b56 for changeset 35d8828b27fb 2012-09-13 13:15:39 -07:00
David Katleman
9500be57ff Added tag jdk8-b56 for changeset 5cc92e17f3ec 2012-09-13 13:15:34 -07:00
David Katleman
aeb1e1d09e Added tag jdk8-b56 for changeset 1bce16d0ddd1 2012-09-13 13:15:14 -07:00
David Katleman
0d408009f6 Added tag jdk8-b56 for changeset 1797aae1f07c 2012-09-13 13:14:58 -07:00
David Katleman
4fd78c5611 Added tag jdk8-b56 for changeset d8e903d6b2e0 2012-09-13 13:14:51 -07:00
Roland Westrelin
00c30b04f4 7198074: NPG: assert(((Metadata*)obj)->is_valid()) failed: obj is valid
Missing test for T_METADATA leads to incorrect register allocation.

Reviewed-by: kvn
2012-09-13 22:09:16 +02:00
Hal Mo
18582cee62 7197906: BlockOffsetArray::power_to_cards_back() needs to handle > 32 bit shifts
Reviewed-by: brutisso, johnc, ysr
2012-09-13 21:20:26 +02:00
Oleg Pekhovskiy
ffadb2c6a5 7198318: SunToolkitSubclass.java should be removed
Reviewed-by: serb
2012-09-13 21:23:23 +04:00
Oleg Pekhovskiy
08a51f1378 7186109: Simplify lock machinery for PostEventQueue & EventQueue
Reviewed-by: art, anthony, dholmes
2012-09-13 19:53:13 +04:00
David Katleman
895f5c3cd5 Merge 2012-09-12 15:57:26 -07:00
Sergey Bylokhov
589854449e 7124534: [macosx] Submenu title overlaps with Submenu indicator in JPopupMenu
Reviewed-by: art
2012-09-12 21:16:39 +04:00
Zhengyu Gu
a2f9b747a4 Merge 2012-09-11 20:12:55 -07:00
Zhengyu Gu
d8037e4c8d Merge 2012-09-11 18:28:51 -07:00
Zhengyu Gu
442e4b0e54 7181995: NMT ON: NMT assertion failure assert(cur_vm->is_uncommit_record() || cur_vm->is_deallocation_record
Fixed virtual memory records merge and promotion logic, should be based on sequence number vs. base address order

Reviewed-by: coleenp, acorn
2012-09-11 20:53:17 -04:00
Coleen Phillimore
6f1b52ab16 7196681: NPG: Some JSR 292 tests crash in Windows exception handler
There was a rogue os::breakpoint() call in log_dependency left over from the jsr292 merge.  Also changed verify_oop() calls for metadata to verify_{method,klass}_ptr.

Reviewed-by: kvn, twisti
2012-09-11 20:20:38 -04:00
Kelly O'Hair
408baee12e Merge 2012-09-11 14:18:54 -07:00
Kelly O'Hair
b4f55953e0 7197771: Adjust jdk sources to avoid use of implementation defined value of __FILE__
7180608: Sort the order of object files when building shared libraries

Reviewed-by: ohrstrom, erikj, tbell
2012-09-11 13:40:59 -07:00
Mike Duigou
bb1c4324e9 7189926: Reduce test size for default run. Add additional run enabling alternative hashing
Reviewed-by: alanb
2012-09-11 07:42:02 -07:00
Lana Steuck
ebe7692e1d Merge 2012-09-14 10:14:02 -07:00
Mandy Chung
c6064021fd 7193302: Remove ConstructorProperties annotation from java.lang.management.LockInfo
Reviewed-by: alanb, sla, egahlin
2012-09-14 09:47:14 -07:00
Sean Mullan
478bf4b32a Merge 2012-09-14 10:30:38 -04:00
Sean Mullan
9c6c879e23 Merge 2012-09-14 10:14:15 -04:00
Sean Mullan
5e99983092 7176627: CertPath/jep124/PreferCRL_SoftFail test fails (Could not determine revocation status)
Reviewed-by: xuelei
2012-09-14 10:13:04 -04:00
Alan Bateman
a9eb740a31 7197637: (ch) sun.nio.ch.Default* cause providers for other platforms to be included in rt.jar
Reviewed-by: mchung
2012-09-13 15:04:01 +01:00
Chris Hegarty
3505949495 7197203: sun/misc/URLClassPath/ClassnameCharTest.sh failed, compile error
Reviewed-by: alanb
2012-09-13 11:17:08 +01:00
Sean Mullan
fb2cf39b23 Merge 2012-09-12 15:21:46 -04:00
Jason Uh
b89fe033cb 7196593: java.security.debug=help doesn't list certpath option
Reviewed-by: mullan, wetmore, valeriep
2012-09-12 15:20:54 -04:00
Roland Westrelin
08757b8a99 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
C1 needs knowledge of T_METADATA at the LIR level.

Reviewed-by: kvn, coleenp
2012-09-11 16:20:57 +02:00
Stefan Karlsson
b979c4ebe0 7197350: NPG: jvmtiHeapReferenceCallback receives incorrect reference_kind for system class roots
Fix the iteration over the system classes and report the correct reference kind.

Reviewed-by: coleenp, rbackman
2012-09-11 14:59:23 +02:00
Andrew Brygin
24043fa401 7181199: [macosx] Startup is much slower in headless mode for apps using Fonts
Reviewed-by: jgodinez, prr
2012-09-11 13:32:48 +04:00
Sergey Malenkov
c14183f376 7193977: REGRESSION:Java 7's JavaBeans persistence ignoring the "transient" flag on properties
Reviewed-by: rupashka
2012-09-11 10:58:39 +04:00
Lana Steuck
35b39b9d65 Merge 2012-09-10 17:55:41 -07:00
Lana Steuck
143e0d9e1c Merge 2012-09-10 17:55:00 -07:00
Christian Thalinger
2ab9ff2658 7196242: vm/mlvm/indy/stress/java/loopsAndThreads crashed
Reviewed-by: jrose, coleenp, jmasa, kvn
2012-09-10 16:37:22 -07:00
Jennifer Godinez
accba3a5e1 7183516: [macosx]Can't print-out the defined fonts for PrintFont_2D and AntialiasTableTest
Reviewed-by: bae, prr
2012-09-10 10:07:10 -07:00
Sean Mullan
6ac22bda1f Merge 2012-09-10 09:18:10 -04:00
Sean Mullan
2f5dfb27c2 Merge 2012-09-10 09:00:00 -04:00
Sean Mullan
21f5431109 7195301: XML Signature DOM implementation should not use instanceof to determine type of Node
Reviewed-by: xuelei
2012-09-10 08:57:51 -04:00
Bhavesh Patel
2c45db0933 Merge 2012-09-08 22:54:21 -07:00
Bhavesh Patel
fc3506df22 7180906: Javadoc tool does not apply parameter -nosince
Reviewed-by: jjg
2012-09-08 22:43:38 -07:00
Coleen Phillimore
6fda647450 7196103: NPG: Unable to allocate bit map for parallel garbage collection for the requested heap size
Don't allocate huge class metaspace size by default on x64

Reviewed-by: stefank, jmasa, kvn
2012-09-07 16:42:25 -04:00
Sean Coffey
19e3f0756e 7180362: RFE: Implement date cutover functionality for currency.properties file
Reviewed-by: naoto
2012-09-07 21:22:37 +01:00
Jonathan Gibbons
b4b43de210 7196760: tree end positions incorrect after anno processing
Reviewed-by: mcimadamore
2012-09-07 11:35:53 -07:00
Jonathan Gibbons
f4749d4e50 7196774: javac cannot be built with JDK 6 after 7151010
Reviewed-by: mcimadamore
2012-09-07 11:24:00 -07:00
Jonathan Gibbons
0844683a0e 7186925: JavapTask passes null to java.io.Writer
Reviewed-by: jjh
2012-09-07 11:12:16 -07:00
Jason Uh
21cc7bf277 4647343: IDENT variable in sun.security.x509 classes not used
Reviewed-by: mullan
2012-09-07 12:49:04 -04:00
Coleen Phillimore
12b9a4edbb 7195833: NPG: Rename instanceClassLoaderKlass, instanceRefKlass and instanceMirrorKlass
Simple renaming to be consistent with instanceKlass->InstanceKlass renaming

Reviewed-by: stefank, jmasa
2012-09-07 12:04:16 -04:00
John Zavgren
8fbd047f8c 6354758: rename old test HttpServer classes
Reviewed-by: chegar, michaelm, khazra
2012-09-07 15:30:17 +01:00
Eric Wang
de965a866a 7032247: java/net/InetAddress/GetLocalHostWithSM.java fails if hostname resolves to loopback address
TESTBUG

Reviewed-by: chegar, alanb
2012-09-07 14:00:31 +01:00
Alexander Scherbatiy
966d2c0cd4 7194469: Pressing the Enter key results in an alert tone beep when focus is TextField
Reviewed-by: bagiras, denis
2012-09-07 13:08:59 +04:00
Weijun Wang
7e677a587b 7196677: diff compares same file to itself in PaddingTest regression test
Reviewed-by: xuelei
2012-09-07 10:24:22 +08:00
David Katleman
7eb98442e1 Added tag jdk8-b55 for changeset bc332057d97a 2012-09-06 17:28:10 -07:00
David Katleman
1e5b3e3ded Added tag jdk8-b55 for changeset 4efc4ab93edd 2012-09-06 17:27:56 -07:00
David Katleman
79f7de8d0f Added tag jdk8-b55 for changeset 39d1771dd21b 2012-09-06 17:27:48 -07:00
David Katleman
76b8a9a6b7 Added tag jdk8-b55 for changeset b5d27d05eea2 2012-09-06 17:27:44 -07:00
David Katleman
2aa10d79aa Added tag jdk8-b55 for changeset 49f23700884c 2012-09-06 17:27:33 -07:00
David Katleman
ef3763175d Added tag jdk8-b55 for changeset a180f4cc7c94 2012-09-06 17:27:24 -07:00
David Katleman
5802f97caf Added tag jdk8-b55 for changeset b4f6c05ae88a 2012-09-06 17:27:20 -07:00
Lance Andersen
1e258cff36 7192302: Remove JDBCRowSetImpl dependency on java.beans
Reviewed-by: alanb, mchung
2012-09-06 13:16:19 -04:00
Jon Masamitsu
cd5df1082a 7196298: Better fix for 7195789
Reviewed-by: jcoomes, brutisso
2012-09-06 07:28:30 -07:00
Oleg Pekhovskiy
9c35d5e4d1 7153339: InternalError when drawLine with Xor and Antialiasing
Reviewed-by: prr, flar
2012-09-06 17:57:31 +04:00
Mikael Gerdin
cfefd5fc47 7195557: NPG: Unexpected number of memory pools
Update management tests to work with a VM without a permanent generation memory pool

Reviewed-by: rbackman, brutisso, sla, dholmes
2012-09-06 14:07:12 +02:00
Alexander Zuev
a483db078d 7175183: [macosx] Objective-C exception thrown when switching monitor configuration
Reviewed-by: prr, serb
2012-09-06 14:59:54 +04:00
Lana Steuck
a1878f7d14 Merge 2012-09-05 20:03:19 -07:00
Lana Steuck
29f70d33d7 Merge 2012-09-05 20:01:40 -07:00
Lana Steuck
2216719923 Merge 2012-09-05 17:33:52 -07:00
Coleen Phillimore
8536f548db 7195867: NPG: SAJDI tests fail with sun.jvm.hotspot.types.WrongTypeException: No suitable match for type
Need to restore the vtable in metadata when we restore the type from the shared archive.

Reviewed-by: acorn, jcoomes, jmasa, jrose
2012-09-05 20:08:08 -04:00
Lana Steuck
51b47903db Merge 2012-09-05 13:50:00 -07:00
Lana Steuck
147f804a82 Merge 2012-09-05 12:00:30 -07:00
Kumar Srinivasan
e9b83f5d6f 7194005: (launcher) needs to be enhanced for 64-bit jar file handling
Reviewed-by: darcy, sherman
2012-09-05 11:38:40 -07:00
Lana Steuck
9014f4ced0 Merge 2012-09-05 11:59:27 -07:00
Sergey Bylokhov
7788603b2e 7124523: [macosx] b216: Mising part of applet UI
Reviewed-by: denis, alexsch
2012-09-05 21:40:05 +04:00
Valerie Peng
c53bbad396 Merge 2012-09-05 10:26:54 -07:00
Vladimir Kozlov
f3b6368c39 7196167: NPG: mismerge in make/solaris/makefiles/fastdebug.make
Remove the workaround of 7187454 problem which was restored incorrectly during NPG merge.

Reviewed-by: coleenp, dholmes
2012-09-05 10:18:37 -07:00
Scott Kovatch
2663894371 7187834: [macosx] Usage of private API in macosx 2D implementation causes Apple Store rejection
Reviewed-by: prr, igor
2012-09-05 09:34:19 -07:00
Jim Holmlund
7dfe1cb86c 7185778: javah error "Not a valid class name" on class names with dollar signs
Reviewed-by: jjg
2012-09-05 08:32:32 -07:00
Staffan Larsen
330ba0e873 6963102: Testcase failures sun/tools/jstatd/jstatdExternalRegistry.sh and sun/tools/jstatd/jstatdDefaults.sh
Make tests more resilient by allowing for more error messages from jps

Reviewed-by: alanb, rbackman, dsamersoff
2012-09-05 14:42:44 +02:00
Stefan Karlsson
36d57e3669 7195935: NPG: Some issues with compressed oops
Don't decompress the klass pointer in the G1 pre-barrier code when !UseCompressedKlassPointers

Reviewed-by: coleenp, brutisso
2012-09-05 10:39:29 +02:00
Valerie Peng
a431f9851d 7044060: Need to support NSA Suite B Cryptography algorithms
Add support for DSA parameter generation and OIDs for NSA Suite B algorithms.

Reviewed-by: vinnie
2012-09-04 18:41:06 -07:00
Jon Masamitsu
6f32be5139 7195789: NPG: assert(used + free == capacity) failed: Accounting is wrong
Reviewed-by: coleenp, jcoomes
2012-09-04 16:20:28 -07:00
Christian Thalinger
0f2dd1c15e 7196120: NPG: JSR 2292 test fails because missing fix for 7188911
Reviewed-by: kvn, coleenp
2012-09-04 18:01:20 -07:00
Roland Westrelin
badaff577b 7184649: NPG: Implement another MetdataPtr case
Xmeet when both inputs are MetadataPtr.

Reviewed-by: kvn
2012-09-04 23:27:55 +02:00
Jonathan Gibbons
52ca21c92a 7195519: OutOfMemoryError in docs build after 7151010
Reviewed-by: darcy
2012-09-04 12:53:50 -07:00
Sergey Malenkov
2276a38632 7195106: REGRESSION : There is no way to get Icon inf, once Softreference is released
Reviewed-by: rupashka
2012-09-04 20:50:44 +04:00
Stefan Karlsson
3610a76e25 7195968: NPG: oopDesc::list_ptr_from_klass is broken
Remove incorrect cast

Reviewed-by: brutisso, coleenp
2012-09-04 13:01:03 +02:00
Eric Wang
e0782017fe 7195733: TEST_BUG: sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java failing
Reviewed-by: chegar, alanb, xuelei
2012-09-04 02:24:51 -07:00
Sergey Malenkov
25c0370a8b 7169395: Exception throws due to the changes in JDK 7 object tranversal and break backward compatibility
Reviewed-by: art
2012-09-04 13:12:16 +04:00
Coleen Phillimore
eff152a7be 7195823: NPG: CMS reserved() doesn't match _rs.base()
If the commit fails, the size isn't set so the assert fails.

Reviewed-by: kamg
2012-09-03 18:37:12 -04:00
Jon Masamitsu
5c58d27aac 6964458: Reimplement class meta-data storage to use native memory
Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes

Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com>
Co-authored-by: Mikael Gerdin <mikael.gerdin@oracle.com>
Co-authored-by: Tom Rodriguez <tom.rodriguez@oracle.com>
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
2012-09-01 13:25:18 -04:00
John Coomes
36eee7c8c8 7195615: new hotspot build - hs25-b01
Reviewed-by: johnc
2012-08-31 16:39:35 -07:00
Dan Xu
b6bee3c9e9 7193406: Clean-up JDK Build Warnings in java.util, java.io
Clean-up JDK Build Warnings in java.util, java.io Packages

Reviewed-by: smarks, darcy, khazra, dholmes, forax, dl, andrew, aph, omajid, ulfzibis, christos, mduigou
2012-08-31 13:42:47 -07:00
Dmytro Sheyko
366a5c5175 7194597: Typeo in com.sun.management.VMOption.toString()
VMOption.toString() returns "...(read-only)" if writable "...(read-write)" otherwise.

Reviewed-by: alanb, mchung
2012-09-11 19:58:36 +04:00
Anton Tarasov
67b1f9248b 6981400: Tabbing between textfield do not work properly when ALT+TAB
7157015: [macosx] Situation when KeyEventDispatcher doesn't work on AWT but does on Swing
7121442: Regression : Reopen CR 6458497 still reproducible using JDK 7

Reviewed-by: art, leonidr
2012-08-31 16:31:29 +04:00
Sergey Malenkov
7d367a5123 7186794: Setter not found. PropertyDescriptor(PropertyDescriptor,PropertyDescriptor)
Reviewed-by: rupashka
2012-08-31 14:49:23 +04:00
Sergey Malenkov
99bfc33cce 7192955: Introspector overide PropertyDescriptor for generic type field defined in super class
Reviewed-by: rupashka
2012-08-31 14:32:09 +04:00
Joel Borggrén-Franck
9c23b8bad0 7151010: Add compiler support for repeating annotations
Reviewed-by: jjg, mcimadamore
2012-08-31 10:37:46 +01:00
Denis Fokin
ac4a9defca 7192887: java/awt/Window/Grab/GrabTest.java still failed (fix failed for CR 7149068)
Reviewed-by: ant, serb
2012-08-30 01:17:24 +04:00
Leonid Romanov
18e3872928 7124375: [macosx] Focus isn't transfered as expected between components
Reviewed-by: art, ant, serb
2012-08-29 19:53:35 +04:00
Alexander Scherbatiy
31ec802d7e 7171045: [macosx] There are no enter or exit events reported against 8b39 for MouseEventsDuringDrag
Reviewed-by: anthony, serb
2012-08-29 15:54:28 +04:00
Rickard Bäckman
228b4f6d7f 7093328: JVMTI: jvmtiPrimitiveFieldCallback always report 0's for static primitives
Reviewed-by: dholmes, dcubed
2012-08-28 15:15:29 +02:00
Coleen Phillimore
5f4a2405a7 Merge 2012-10-15 22:33:19 -04:00
Kevin Walls
b296b69382 7195151: Multiplatform tescase for 6929067
Reviewed-by: kamg, kvn
2012-10-15 16:48:48 +01:00
Keith McGuigan
04a9a14193 7054345: Support version 52.0 class file in HotSpot
Accept classfiles with major version 52

Reviewed-by: coleenp, acorn
2012-10-11 14:27:54 -04:00
Harold Seigel
6b158b4089 7199068: NPG: SharedSkipVerify is meaningless
Remove the SharedSkipVerify flag

Reviewed-by: kamg, sspitsyn, coleenp
2012-10-10 17:04:33 -04:00
Nils Eliasson
ac3b6a6442 7163863: Updated projectcreator
Enable source browsing for all platform dependent code

Reviewed-by: brutisso, coleenp
2012-03-29 16:43:21 +02:00
Christian Thalinger
0bae010a3b 7200001: failed C1 OSR compile doesn't get recompiled with C2
Reviewed-by: kvn
2012-09-24 17:59:24 -07:00
Vladimir Kozlov
913a550c76 Merge 2012-09-24 14:46:06 -07:00
Christian Thalinger
370f0c73b3 Merge 2012-09-24 12:31:47 -07:00
Tao Mao
c791cfaf95 7188176: The JVM should differentiate between T and M series and adjust GC ergonomics
Reviewed-by: kvn
2012-09-24 11:07:03 -07:00
Goetz Lindenmaier
5ada196961 7200163: add CodeComments functionality to assember stubs
Pass the codeBuffer to the Stub constructor, and adapts the disassembler to print the comments.

Reviewed-by: jrose, kvn, twisti
2012-09-24 10:30:14 -07:00
Roland Westrelin
302540691b 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
Use shorter instruction sequences for atomic add and atomic exchange when possible.

Reviewed-by: kvn, jrose
2012-09-20 16:49:17 +02:00
Vladimir Kozlov
25f18c20d9 7199010: incorrect vector alignment
Fixed vectors alignment when several arrays are accessed in one loop.

Reviewed-by: roland, twisti
2012-09-19 16:50:26 -07:00
Aleksey Shipilev
3874f44d1c 7198499: TraceTypeProfile as diagnostic option
Reviewed-by: kvn
2012-09-19 10:38:12 -07:00
Vladimir Kozlov
811c047ec1 7196199: java/text/Bidi/Bug6665028.java failed: Bidi run count incorrect
Save whole XMM/YMM registers in safepoint interrupt handler.

Reviewed-by: roland, twisti
2012-09-17 19:39:07 -07:00
Vladimir Kozlov
45435c5485 7197033: missing ResourceMark for assert in Method::bci_from()
Added missing ResourceMark.

Reviewed-by: dholmes, coleenp, jmasa
2012-09-17 17:02:10 -07:00
Christian Thalinger
b0d292378a 7196262: JSR 292: java/lang/invoke/PrivateInvokeTest.java fails on solaris-sparc
Reviewed-by: kvn, jrose, bdelsart
2012-09-17 12:57:58 -07:00
Vinnie Ryan
1ad2cb3303 7133495: [macosx] KeyChain KeyStore implementation retrieves only one private key entry
Reviewed-by: weijun
2012-02-14 11:18:32 +00:00
Dmytro Sheyko
2b51b9ab1a 6853676: OperatingSystemMXBean.TotalPhysicalMemorySize has incorrect value
Reviewed-by: alanb, dholmes, sla
2009-06-19 16:50:38 +03:00
Alan Bateman
ddd9274a10 7033824: TEST_BUG: java/nio/file/Files/CopyAndMove.java fails intermittently
Reviewed-by: chegar
2012-08-31 12:25:37 +01:00
Sean Coffey
0c39548e00 7195063: [TEST] jtreg flags com/sun/corba/cachedSocket/7056731.sh with Error failure
Reviewed-by: chegar
2012-08-31 12:25:29 +01:00
Joel Borggrén-Franck
9f5d367ff9 7151010: Add compiler support for repeating annotations
Reviewed-by: darcy, jjg
2012-08-31 10:52:17 +02:00
Stuart Marks
fac11519c4 7195099: update problem list with RMI test failures
Reviewed-by: alanb
2012-08-30 18:53:02 -07:00
Lana Steuck
e36810fd84 Merge 2012-08-30 16:51:46 -07:00
Sean Mullan
3a11096dee Merge 2012-08-30 14:42:10 -07:00
Stephen Flores
8081077ff5 6995421: Eliminate the static dependency to sun.security.ec.ECKeyFactory
Reviewed-by: mullan, vinnie
2012-08-30 14:40:57 -07:00
Dan Xu
f6d90bb347 7193683: DriverManager Iterator Warning cleanup
Reviewed-by: lancea
2012-08-30 13:38:03 -04:00
Dan Xu
be8df60f79 7193710: ByteArrayOutputStream Javadoc contains unclosed <code> element
Reviewed-by: dholmes, alanb, ulfzibis
2012-08-30 12:55:40 +01:00
Weijun Wang
a04e185cd1 7184815: [macosx] Need to read Kerberos config in files
Reviewed-by: valeriep
2012-08-29 11:03:02 +08:00
2331 changed files with 130052 additions and 125142 deletions

View File

@@ -1,6 +1,7 @@
^build/
^dist/
/nbproject/private/
nbproject/private/
^webrev
^.hgtip
^.bridge2
.DS_Store

View File

@@ -176,3 +176,10 @@ cecd7026f30cbd83b0601925a7a5e059aec98138 jdk8-b49
b67041a6cb508da18d2f5c7687e6a31e08bea4fc jdk8-b52
c7aa5cca1c01689a7b1a92411daf83684af05a33 jdk8-b53
7c6aa31ff1b2ae48c1c686ebe1aadf0c3da5be15 jdk8-b54
319f583f66db47395fa86127dd3ddb729eb7c64f jdk8-b55
ffe6bce5a521be40146af2ac03c509b7bac30595 jdk8-b56
2c21c080b11b93efb3851e39e1363e45da805943 jdk8-b57
479d3302a26d7607ba271d66973e59ebf58825b6 jdk8-b58
3bd874584fc01aae92fbc8827e2bd04d8b6ace04 jdk8-b59
5e3adc681779037a2d33b7be6f75680619085492 jdk8-b60
cdaa6122185f9bf512dcd6600f56bfccc4824e8c jdk8-b61

View File

@@ -176,3 +176,10 @@ c97b99424815c43818e3cc3ffcdd1a60f3198b52 jdk8-b49
8d24def5ceb3b8f2e857f2e18b2804fc59eecf8d jdk8-b52
febd7ff5280067ca482faaeb9418ae88764c1a35 jdk8-b53
c1a277c6022affbc6855bdfb039511e73fbe2395 jdk8-b54
b85b44cced2406792cfb9baab1377ff03e7001d8 jdk8-b55
76844579fa4b30929731115b237e477181a82394 jdk8-b56
522dfac8ca4d07c0b74025d4ac3b6e5feefbb829 jdk8-b57
9367024804874faf8e958adeb333682bab1c0c47 jdk8-b58
dae9821589ccd2611bdf7084269b98e819091770 jdk8-b59
e07f499b9dccb529ecf74172cf6ac11a195ec57a jdk8-b60
20ff117b509075c3aec4ee3a57990ecd5db5df9c jdk8-b61

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1995, 2012, 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
@@ -23,6 +23,16 @@
# questions.
#
# If NEWBUILD is defined, use the new build-infra Makefiles and configure.
# See NewMakefile.gmk for more information.
ifeq ($(NEWBUILD),true)
# The new top level Makefile
include NewMakefile.gmk
else # Original Makefile logic
BUILD_PARENT_DIRECTORY=.
# Basename of any originally supplied ALT_OUTPUTDIR directory
@@ -557,3 +567,5 @@ include ./make/jprt.gmk
# Force target
FRC:
endif # Original Makefile logic

211
NewMakefile.gmk Normal file
View File

@@ -0,0 +1,211 @@
#
# Copyright (c) 2012, 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.
#
# Utilities used in this Makefile
BASENAME=basename
CAT=cat
CD=cd
CMP=cmp
CP=cp
ECHO=echo
MKDIR=mkdir
PWD=pwd
SH=sh
ifeq ($(PLATFORM),windows)
ZIP=zip
else
# store symbolic links as the link
ZIP=zip -y
endif
# Insure we have a path that looks like it came from pwd
# (This is mostly for Windows sake and drive letters)
define UnixPath # path
$(shell (cd "$1" && $(PWD)))
endef
# Current root directory
CURRENT_DIRECTORY := $(shell $(PWD))
# Build directory root
BUILD_DIR_ROOT = $(CURRENT_DIRECTORY)/build
# All configured Makefiles to run
ALL_MAKEFILES = $(wildcard $(BUILD_DIR_ROOT)/*-*/Makefile)
# All bundles to create
ALL_IMAGE_DIRS = $(wildcard $(BUILD_DIR_ROOT)/*-*/images/*-image)
# Build all the standard 'all', 'images', and 'clean' targets
all images clean: checks
@if [ "$(ALL_MAKEFILES)" = "" ] ; then \
$(ECHO) "ERROR: No configurations to build"; exit 1; \
fi
@for bdir in $(dir $(ALL_MAKEFILES)) ; do \
$(ECHO) "$(CD) $${bdir} && $(MAKE) $(EXTRA_MAKE_ARGS) $@" ; \
$(CD) $${bdir} && $(MAKE) $(EXTRA_MAKE_ARGS) $@ ; \
done
# Bundle creation
bundles:
@if [ "$(ALL_IMAGE_DIRS)" = "" ] ; then \
$(ECHO) "ERROR: No images to bundle"; exit 1; \
fi
@for i in $(ALL_IMAGE_DIRS) ; do \
$(MKDIR) -p $${i}/../../bundles && \
$(RM) $${i}/../../bundles/`$(BASENAME) $${i}`.zip && \
$(ECHO) "$(CD) $${i} && $(ZIP) -q -r ../../bundles/`$(BASENAME) $${i}`.zip ." && \
$(CD) $${i} && $(ZIP) -q -r ../../bundles/`$(BASENAME) $${i}`.zip . ; \
done
# Clobber all the built files
clobber::
$(RM) -r $(BUILD_DIR_ROOT)
# Make various checks to insure the build will be successful
# Possibilities:
# * Check that if any closed repo is provided, they all must be.
# * Check that all open repos exist, at least until we are ready for some
# kind of partial build.
checks:
@$(ECHO) "No checks yet"
# Keep track of phony targets
PHONY_LIST += all images clean clobber checks
###########################################################################
# To help in adoption of the new configure&&make build process, a bridge
# build will use the old settings to run configure and do the build.
# Build with the configure bridge
bridgeBuild: bridge2configure images
# Bridge from old Makefile ALT settings to configure options
bridge2configure: .bridge2configureOpts
$(CD) common/makefiles && sh ../autoconf/configure $(strip $(shell $(CAT) $<))
# Create a file with configure options created from old Makefile mechanisms.
.bridge2configureOpts: .bridge2configureOptsLatest
$(RM) $@
$(CP) $< $@
# In case make was invoked from a specific path
_MAKE_COMMAND_PATH:=$(firstword $(MAKE))
ifneq ($(dir $(_MAKE_COMMAND_PATH)),./)
# This could be removed someday if JPRT was fixed and we could assume that
# the path to make was always in PATH.
MAKE_BINDIR:=$(call UnixPath,$(dir $(_MAKE_COMMAND_PATH)))
NEWPATH:=$(MAKE_BINDIR):${PATH}
PATH:=$(NEWPATH)
export PATH
MAKE_COMMAND=$(MAKE_BINDIR)/$(notdir $(_MAKE_COMMAND_PATH))
else
MAKE_COMMAND=$(_MAKE_COMMAND_PATH)
endif
# Use this file to only change when obvious things have changed
.bridge2configureOptsLatest: FRC
$(RM) $@.tmp
@$(ECHO) " MAKE=$(MAKE_COMMAND) " >> $@.tmp
@$(ECHO) " --with-debug-level=$(if $(DEBUG_LEVEL),$(DEBUG_LEVEL),release) " >> $@.tmp
ifdef ARCH_DATA_MODEL
@$(ECHO) " --with-target-bits=$(ARCH_DATA_MODEL) " >> $@.tmp
endif
ifdef ALT_PARALLEL_COMPILE_JOBS
@$(ECHO) " --with-num-cores=$(ALT_PARALLEL_COMPILE_JOBS) " >> $@.tmp
endif
ifdef ALT_BOOTDIR
@$(ECHO) " --with-boot-jdk=$(call UnixPath,$(ALT_BOOTDIR)) " >> $@.tmp
endif
ifdef ALT_CUPS_HEADERS_PATH
@$(ECHO) " --with-cups-include=$(call UnixPath,$(ALT_CUPS_HEADERS_PATH)) " >> $@.tmp
endif
ifdef ALT_FREETYPE_HEADERS_PATH
@$(ECHO) " --with-freetype=$(call UnixPath,$(ALT_FREETYPE_HEADERS_PATH)/..) " >> $@.tmp
endif
@if [ -f $@ ] ; then \
if ! $(CMP) $@ $@.tmp > /dev/null ; then \
$(CP) $@.tmp $@ ; \
fi ; \
else \
$(CP) $@.tmp $@ ; \
fi
$(RM) $@.tmp
# Clobber all the built files
clobber:: bridge2clobber
bridge2clobber::
$(RM) .bridge2*
# Keep track of phony targets
PHONY_LIST += bridge2configure bridgeBuild bridge2clobber
###########################################################################
# Javadocs
#
javadocs:
cd common/makefiles && $(MAKE) -f MakefileJavadoc.gmk
# Keep track of phony targets
PHONY_LIST += javadocs
###########################################################################
# JPRT targets
ifndef JPRT_ARCHIVE_BUNDLE
JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/j2sdk-image.zip
endif
jprt_build_product: DEBUG_LEVEL=release
jprt_build_product: BUILD_DIRNAME=*-release
jprt_build_product: jprt_build_generic
jprt_build_fastdebug: DEBUG_LEVEL=fastdebug
jprt_build_fastdebug: BUILD_DIRNAME=*-fastdebug
jprt_build_fastdebug: jprt_build_generic
jprt_build_debug: DEBUG_LEVEL=slowdebug
jprt_build_debug: BUILD_DIRNAME=*-debug
jprt_build_debug: jprt_build_generic
jprt_build_generic: EXTRA_MAKE_ARGS=LOG=nofile,info
jprt_build_generic: $(JPRT_ARCHIVE_BUNDLE)
$(JPRT_ARCHIVE_BUNDLE): bridgeBuild bundles
$(MKDIR) -p $(@D)
$(RM) $@
$(CP) $(BUILD_DIR_ROOT)/$(BUILD_DIRNAME)/bundles/j2sdk-image.zip $@
# Keep track of phony targets
PHONY_LIST += jprt_build_product jprt_build_fastdebug jprt_build_debug \
jprt_build_generic
###########################################################################
# Phony targets
.PHONY: $(PHONY_LIST)
# Force target
FRC:

View File

@@ -96,7 +96,8 @@
</li>
<li>Windows only:
<ul>
<li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
<li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>) <strong>or</strong></li>
<li>Minimalist GNU for Windows (<a href="#msys">MinGW/MSYS</a>)</li>
<li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
</ul>
</li>
@@ -161,7 +162,7 @@
<blockquote>
This file often describes specific requirements for what we call the
"minimum build environments" (MBE) for this
specific release of the JDK,
specific release of the JDK,
Building with the MBE will generate the most compatible
bits that install on, and run correctly on, the most variations
of the same base OS and hardware architecture.
@@ -241,16 +242,16 @@
</tbody>
</table>
<p>
These same sources do indeed build on many more systems than the
above older generation systems, again the above is just a minimum.
These same sources do indeed build on many more systems than the
above older generation systems, again the above is just a minimum.
<p>
Compilation problems with newer or different C/C++ compilers is a
common problem.
Similarly, compilation problems related to changes to the
Compilation problems with newer or different C/C++ compilers is a
common problem.
Similarly, compilation problems related to changes to the
<tt>/usr/include</tt> or system header files is also a
common problem with newer or unreleased OS versions.
Please report these types of problems as bugs so that they
can be dealt with accordingly.
common problem with newer or unreleased OS versions.
Please report these types of problems as bugs so that they
can be dealt with accordingly.
</blockquote>
<!-- ------------------------------------------------------ -->
<hr>
@@ -266,15 +267,15 @@
<p>
<blockquote>
After installing <a href="http://fedoraproject.org">Fedora</a> 9
you need to install several build dependencies. The simplest
way to do it is to execute the following commands as user
you need to install several build dependencies. The simplest
way to do it is to execute the following commands as user
<tt>root</tt>:
<p/>
<code>yum-builddep java-1.6.0-openjdk</code>
<p/>
<code>yum install gcc gcc-c++</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
@@ -283,15 +284,15 @@
<p>
<blockquote>
After installing <a href="http://fedoraproject.org">Fedora</a> 10
you need to install several build dependencies. The simplest
way to do it is to execute the following commands as user
you need to install several build dependencies. The simplest
way to do it is to execute the following commands as user
<tt>root</tt>:
<p/>
<code>yum-builddep java-1.6.0-openjdk</code>
<p/>
<code>yum install gcc gcc-c++</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
@@ -300,15 +301,15 @@
<p>
<blockquote>
After installing <a href="http://fedoraproject.org">Fedora</a> 11
you need to install several build dependencies. The simplest
way to do it is to execute the following commands as user
you need to install several build dependencies. The simplest
way to do it is to execute the following commands as user
<tt>root</tt>:
<p/>
<code>yum-builddep java-1.6.0-openjdk</code>
<p/>
<code>yum install gcc gcc-c++</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
@@ -360,16 +361,16 @@
<h4>Debian 5.0 (Lenny)</h4>
<p>
<blockquote>
After installing <a href="http://debian.org">Debian</a> 5
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands as user <tt>root</tt>:
After installing <a href="http://debian.org">Debian</a> 5
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands as user <tt>root</tt>:
<p/>
<code>aptitude build-dep openjdk-6</code>
<p/>
<code>aptitude install openjdk-6-jdk libmotif-dev</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
</blockquote>
@@ -380,52 +381,52 @@
<h4>Ubuntu 8.04</h4>
<p>
<blockquote>
After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04
you need to install several build dependencies.
After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04
you need to install several build dependencies.
<p/>
First, you need to enable the universe repository in the
Software Sources application and reload the repository
information. The Software Sources application is available
under the System/Administration menu.
First, you need to enable the universe repository in the
Software Sources application and reload the repository
information. The Software Sources application is available
under the System/Administration menu.
<p/>
The simplest way to install the build dependencies is to
execute the following commands:
The simplest way to install the build dependencies is to
execute the following commands:
<p/>
<code>sudo aptitude build-dep openjdk-6</code>
<p/>
<code>sudo aptitude install openjdk-6-jdk</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
</blockquote>
<h4>Ubuntu 8.10</h4>
<p>
<blockquote>
After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10
you need to install several build dependencies. The simplest
way to do it is to execute the following commands:
After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10
you need to install several build dependencies. The simplest
way to do it is to execute the following commands:
<p/>
<code>sudo aptitude build-dep openjdk-6</code>
<p/>
<code>sudo aptitude install openjdk-6-jdk</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
</blockquote>
<h4>Ubuntu 9.04</h4>
<p>
<blockquote>
After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04
you need to install several build dependencies. The simplest
way to do it is to execute the following commands:
After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04
you need to install several build dependencies. The simplest
way to do it is to execute the following commands:
<p/>
<code>sudo aptitude build-dep openjdk-6</code>
<p/>
<code>sudo aptitude install openjdk-6-jdk</code>
<p/>
In addition, it's necessary to set a few environment variables for the build:
In addition, it's necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
</blockquote>
@@ -436,20 +437,20 @@
<h4>OpenSUSE 11.1</h4>
<p>
<blockquote>
After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands:
After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands:
<p/>
<code>sudo zypper source-install -d java-1_6_0-openjdk</code>
<p/>
<code>sudo zypper install make</code>
<p/>
In addition, it is necessary to set a few environment variables for the build:
In addition, it is necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
<p/>
Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
<p/>
<code>export -n JAVA_HOME</code>
</blockquote>
@@ -460,14 +461,14 @@
<h4>Mandriva Linux One 2009 Spring</h4>
<p>
<blockquote>
After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands as user <tt>root</tt>:
After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands as user <tt>root</tt>:
<p/>
<code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
<p/>
In addition, it is necessary to set a few environment variables for the build:
In addition, it is necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
</blockquote>
@@ -478,18 +479,18 @@
<h4>OpenSolaris 2009.06</h4>
<p>
<blockquote>
After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands:
After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06
you need to install several build dependencies.
The simplest way to install the build dependencies is to
execute the following commands:
<p/>
<code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
<p/>
In addition, it is necessary to set a few environment variables for the build:
In addition, it is necessary to set a few environment variables for the build:
<p/>
<code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
<p/>
Finally, you need to make sure that the build process can find the Sun Studio compilers:
Finally, you need to make sure that the build process can find the Sun Studio compilers:
<p/>
<code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
</blockquote>
@@ -687,31 +688,20 @@
</li>
<li>
<strong>Windows:</strong>
Make sure you start your build inside a bash/sh/ksh shell
and are using a <tt>make.exe</tt> utility built for that
environment (a cygwin <tt>make.exe</tt> is not the same
as a <tt>make.exe</tt> built for something like
<a href="http://www.mkssoftware.com/">MKS</a>).
<br>
<b>WARNING:</b> Watch out on some make 3.81 versions, it may
not work due to a lack of support for MS-DOS drive letter paths
like <tt>C:/</tt> or <tt>C:\</tt>.
<br>
You may be able to use the information at the
<a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
mozilla developer center</a>
on this topic.
<br>
It's hoped that when make 3.82 starts shipping in a future cygwin
release that this MS-DOS path issue will be fixed.
<br>
It may be possible to download the version at
<a href="http://www.cmake.org/files/cygwin/make.exe">
www.cmake.org make.exe</a>.
<br>
It might be necessary for you to build your own GNU make 3.81,
see the <a href="#buildgmake">"Building GNU make"</a> section
in that case.
Make sure you start your build inside a bash/sh/ksh shell and are
using a <tt>make.exe</tt> utility built for that environment.<br/>
<strong>MKS</strong> builds need a native Windows version of GNU make
(see <a href="#buildgmake">Building GNU make</a>).<br/>
<strong>Cygwin</strong> builds need
a make version which was specially compiled for the Cygwin environment
(see <a href="#buildgmake">Building GNU make</a>). <strong>WARNING:</strong>
the OpenJDK build with the make utility provided by Cygwin will <strong>not</strong>
work because it does not support drive letters in paths. Make sure that
your version of make will be found before the Cygwins default make by
setting an appropriate <tt>PATH</tt> environment variable or by removing
Cygwin's make after you built your own make version.<br/>
<strong>MinGW/MSYS</strong> builds can use the default make which
comes with the environment.
</li>
</ul>
<p>
@@ -727,7 +717,7 @@
<!-- ------------------------------------------------------ -->
<h4><a name="buildgmake">Building GNU make</a></h4>
<blockquote>
First step is to get the GNU make 3.81 source from
First step is to get the GNU make 3.81 (or newer) source from
<a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
ftp.gnu.org/pub/gnu/make/</a>.
Building is a little different depending on the OS and unix toolset
@@ -742,12 +732,24 @@
<tt>./configure && gmake CC=gcc</tt>
</li>
<li>
<strong>Windows for CYGWIN:</strong>
<tt>./configure && make</tt>
<strong>Windows for CYGWIN:</strong><br/>
<tt>./configure</tt><br/>
Add the line <tt>#define HAVE_CYGWIN_SHELL 1</tt> to the end of <tt>config.h</tt><br/>
<tt>make</tt><br/>
<br/>
This should produce <tt>make.exe</tt> in the current directory.
</li>
<li>
<strong>Windows for MKS: (CYGWIN is recommended)</strong>
<tt>./configure && make -f Makefile.win32</tt>
<strong>Windows for MKS:</strong><br/>
Edit <tt>config.h.W32</tt> and uncomment the line <tt>#define HAVE_MKS_SHELL 1</tt><br/>
Set the environment for your native compiler (e.g. by calling:<br/>
<tt>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /xp /x64)</tt>
<tt>nmake -f NMakefile.win32</tt>
<br/>
This should produce <tt>WinDebug/make.exe</tt> and <tt>WinRel/make.exe</tt>
<br/>
If you get the error: <tt>NMAKE : fatal error U1045: spawn failed : Permission denied</tt>
you have to set the <tt>Read &amp; execute</tt> permission for the file <tt>subproc.bat</tt>.
</li>
</ul>
</blockquote>
@@ -894,39 +896,135 @@
<h4><a name="paths">Windows Paths</a></h4>
<blockquote>
<strong>Windows:</strong>
Note that GNU make is a historic utility and is based very
heavily on shell scripting, so it does not tolerate the Windows habit
Note that GNU make, the shell and other Unix-tools required during the build
do not tolerate the Windows habit
of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
there is always a 'short' pathname without spaces for any path that
contains spaces.
Unfortunately, this short pathname can be somewhat dynamic and the
formula is difficult to explain.
You can use <tt>cygpath</tt> utility to map pathnames with spaces
or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
(called 'mixed'), e.g.
<tt>cygpath -s -m "<i>path</i>"</tt>.
Luckily on most Windows systems, you can use <tt>/</tt>instead of <tt>\</tt>, and
there is always a short <a href="http://en.wikipedia.org/wiki/8.3_filename">
"8.3" pathname</a> without spaces for any path that contains spaces.
Unfortunately, this short pathname is somewhat dynamic (i.e. dependant on the
other files and directories inside a given directory) and can not be
algorithmicly calculated by only looking at a specific path name.
<p>
The makefiles will try to translate any pathnames supplied
to it into the <tt>C:/</tt> style automatically.
</p>
<p>
Note that use of CYGWIN creates a unique problem with regards to
Special care has to be taken if native Windows applications
like <tt>nmake</tt> or <tt>cl</tt> are called with file arguments processed
by Unix-tools like <tt>make</tt> or <tt>sh</tt>!
</p>
</blockquote>
<!-- ------------------------------------------------------ -->
<h4><a name="paths">Windows build environments</a></h4>
<blockquote>
Building on Windows requires a Unix-like environment, notably a Unix-like shell.
There are several such environments available of which
<a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a>,
<a href="http://www.cygwin.com/">Cygwin</a> and
<a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for
the OpenJDK build. One of the differences of these three systems is the way
they handle Windows path names, particularly path names which contain
spaces, backslashes as path separators and possibly drive letters. Depending
on the use case and the specifics of each environment these path problems can
be solved by a combination of quoting whole paths, translating backslashes to
forward slashes, escaping backslashes with additional backslashes and
translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename">
"8.3" version</a>.
<p>
As of this writing (MKS ver. 9.4, Cygwin ver. 1.7.9, MinGW/MSYS 1.0.17),
MKS builds are known to be the fastest Windows builds while MingGW/MSYS
builds are slightly slower (about 10%) than MKS builds and Cygwin builds
require nearly twice the time (about 180%) of MKS builds (e.g. on a
DualCore i7 notebook with 8GB of RAM, HDD and 64-bit Windows 7 operating system
the complete OpenJDK 8 product build takes about 49min with MKS, 54min with
MinGW/MSYS and 88min with Cygwin).
</p>
<p>
Mixing tools from the different Unix emulation environments is not a good
idea and will probably not work!
</p>
<p>
<strong>MKS:</strong> is a commercial product which includes
all the Unix utilities which are required to build the OpenJDK except GNU
make. In pre-OpenJDK times it was the only supported build environment on
Windows. The MKS tools support Windows paths with drive letters and
forward slashes as path separator. Paths in environment variables like (for
example) <tt>PATH</tt> are separated by semicolon '<tt>;</tt>'.
</p>
<p>
Recent versions of MKS provide the <tt>dosname</tt> utility to convert paths
with spaces to short (8.3) path names,e .g.
<tt>dosname -s "<i>path</i>"</tt>.
</p>
<p>
If you are using the MKS environment, you need a native Windows version
of Gnu make <a href="#buildgmake">which you can easily build yourself</a>.
</p>
<p>
<strong>Cygwin:</strong>
is an open source, Linux-like environment which tries to emulate
a complete POSIX layer on Windows. It tries to be smart about path names
and can usually handle all kinds of paths if they are correctly quoted
or escaped although internally it maps drive letters <tt>&lt;drive&gt;:</tt>
to a virtual directory <tt>/cygdrive/&lt;drive&gt;</tt>.
</p>
<p>
You can always use the <tt>cygpath</tt> utility to map pathnames with spaces
or the backslash character into the <tt>C:/</tt> style of pathname
(called 'mixed'), e.g. <tt>cygpath -s -m "<i>path</i>"</tt>.
</p>
<p>
Note that the use of CYGWIN creates a unique problem with regards to
setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
the <tt>PATH</tt> variable contains directories
separated with the ";" character (Solaris and Linux uses ":").
separated with the ";" character (Solaris and Linux use ":").
With CYGWIN, it uses ":", but that means that paths like "C:/path"
cannot be placed in the CYGWIN version of <tt>PATH</tt> and
instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
which CYGWIN understands, but only CYGWIN understands.
So be careful with paths on Windows.
</p>
<p>
If you are using the Cygwin environment, you need to
<a href="#buildgmake">compile your own version</a>
of GNU make because the default Cygwin make can not handle drive letters in paths.
</p>
<p>
<strong>MinGW/MSYS:</strong>
MinGW ("Minimalist GNU for Windows") is a collection of free Windows
specific header files and import libraries combined with GNU toolsets that
allow one to produce native Windows programs that do not rely on any
3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building
applications and programs which rely on traditional UNIX tools to
be present. Among others this includes tools like <tt>bash</tt> and <tt>make</tt>.
</p>
<p>
Like Cygwin, MinGW/MSYS can handle different types of path formats. They
are internally converted to paths with forward slashes and drive letters
<tt>&lt;drive&gt;:</tt> replaced by a virtual
directory <tt>/&lt;drive&gt;</tt>. Additionally, MSYS automatically
detects binaries compiled for the MSYS environment and feeds them with the
internal, Unix-style path names. If native Windows applications are called
from within MSYS programs their path arguments are automatically converted
back to Windows style path names with drive letters and backslashes as
path separators. This may cause problems for Windows applications which
use forward slashes as parameter separator (e.g. <tt>cl /nologo /I</tt>)
because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion">
replace such parameters by drive letters</a>.
</p>
<p>
If you are using the MinGW/MSYS system you can use the default make
version supplied by the environment.
</p>
</blockquote>
<!-- ------------------------------------------------------ -->
<h4><a name="windows_checklist">Basic Windows Check List</a></h4>
<blockquote>
<ol>
<li>
Install the
<a href="#cygwin">CYGWIN product</a>.
Install one of the
<a href="#cygwin">CYGWIN</a>, <a href="#msys">MinGW/MSYS</a> or
<a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a> environments.
</li>
<li>
Install the
@@ -1097,9 +1195,9 @@
<a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank">
Sun Studio 12 Update 1 Compilers</a>
(containing version 5.10 of the C and C++ compilers) is required,
including specific patches.
including specific patches.
<p>
The Solaris SPARC patch list is:
The Solaris SPARC patch list is:
<ul>
<li>
118683-05: SunOS 5.10: Patch for profiling libraries and assembler
@@ -1286,7 +1384,8 @@
The XRender header file is included with the other X11 header files
in the package <strong>SFWxwinc</strong> on new enough versions of
Solaris and will be installed in
<tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
<tt>/usr/X11/include/X11/extensions/Xrender.h</tt> or
<tt>/usr/openwin/share/include/X11/extensions/Xrender.h</tt>
</p><p>
<strong>Linux:</strong>
XRender header files are required for building the
@@ -1456,7 +1555,9 @@
<td>Devel</td>
<td>make</td>
<td>The GNU version of the 'make' utility built for CYGWIN.<br>
<b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
<b>NOTE</b>: the Cygwin make can not be used to build the
OpenJDK. You only need it to build your own version of make
(see <a href="#gmake">the GNU make section</a>)</td>
</tr>
<tr>
<td>m4.exe</td>
@@ -1521,6 +1622,21 @@
So it's important that the Visual Studio paths in PATH preceed
the CYGWIN path <tt>/usr/bin</tt>.
</blockquote>
<strong> Minimalist GNU for Windows (<a name="msys">MinGW/MSYS</a>)</strong>
<blockquote>
Alternatively, the set of unix command tools for the OpenJDK build on
Windows can be supplied by
<a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a>.
<p>
In addition to the tools which will be installed by default, you have
to manually install the <tt>msys-zip</tt> and <tt>msys-unzip</tt> packages.
This can be easily done with the MinGW command line installer:<br/>
<tt><br/>
mingw-get.exe install msys-zip<br/>
mingw-get.exe install msys-unzip<br/>
</tt>
</p>
</blockquote>
<strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
<blockquote>
Microsoft DirectX 9.0 SDK (Summer 2004)
@@ -1781,10 +1897,10 @@
</dd>
<dt><a name="ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a></dt>
<dd>
The top-level directory of the libraries and include files for the platform's
graphical programming environment. The default location is platform specific.
For example, on Linux it defaults to <tt>/usr/X11R6/</tt>.
</dd>
The top-level directory of the libraries and include files for the platform's
graphical programming environment. The default location is platform specific.
For example, on Linux it defaults to <tt>/usr/X11R6/</tt>.
</dd>
<dt><strong>Windows specific:</strong></dt>
<dd>
<dl>
@@ -1792,9 +1908,9 @@
<dd>
The location of the
Microsoft Windows SDK where some tools will be
located.
The default is whatever WINDOWSSDKDIR is set to
(or WindowsSdkDir) or the path
located.
The default is whatever WINDOWSSDKDIR is set to
(or WindowsSdkDir) or the path
<br>
<tt>c:\Program Files\Microsoft SDKs\Windows\v7.0a</tt>
</dd>
@@ -1823,17 +1939,17 @@
is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set
to point to the cross-compiler and that any cross-compilation specific flags
are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>.
The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should
also be set to point to the graphical header files (e.g. X11) provided with
the cross-compiler.
The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should
also be set to point to the graphical header files (e.g. X11) provided with
the cross-compiler.
When cross-compiling we skip execution of any demos etc that may be built, and
also skip binary-file verification.
</dd>
<dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt>
<dd>
Used to pass cross-compilation options to the cross-compiler.
Used to pass cross-compilation options to the cross-compiler.
These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables.
</dd>
</dd>
<dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt>
<dd>
Used primarily for cross-compilation builds (and always set in that case)
@@ -1868,23 +1984,23 @@
<dt><tt><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</tt> </dt>
<dd>
Used when the build environment has no graphical capabilities at all. This
excludes building anything that requires graphical libraries to be available.
excludes building anything that requires graphical libraries to be available.
</dd>
<dt><tt><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</tt> </dt>
<dd>
Used to indicate this is a build of the Oracle Java SE Embedded product.
This will enable the directives included in the SE-Embedded specific build
files.
Used to indicate this is a build of the Oracle Java SE Embedded product.
This will enable the directives included in the SE-Embedded specific build
files.
</dd>
<dt><tt><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></tt> </dt>
<dd>
If set to false, disables the use of mmap by the zip utility. Otherwise,
mmap will be used.
If set to false, disables the use of mmap by the zip utility. Otherwise,
mmap will be used.
</dd>
<dt><tt><a name="COMPRESS_JARS"></a>COMPRESS_JARS</tt> </dt>
<dd>
If set to true, causes certain jar files that would otherwise be built without
compression, to use compression.
If set to true, causes certain jar files that would otherwise be built without
compression, to use compression.
</dd>
</dl>
</dd>

View File

@@ -23,18 +23,38 @@
#
script_dir=`dirname $0`
closed_script_dir="$script_dir/../../jdk/make/closed/autoconf"
# Create a timestamp as seconds since epoch
TIMESTAMP=`date +%s`
if test "x`uname -s`" = "xSunOS"; then
# date +%s is not available on Solaris, use this workaround
# from http://solarisjedi.blogspot.co.uk/2006/06/solaris-date-command-and-epoch-time.html
TIMESTAMP=`/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);print $2}'`
# On Solaris /bin/sh doesn't support test -e but /usr/bin/test does.
TEST=`which test`
else
TIMESTAMP=`date +%s`
TEST="test"
fi
if $TEST "$CUSTOM_CONFIG_DIR" = ""; then
custom_script_dir="$script_dir/../../jdk/make/closed/autoconf"
else
custom_script_dir=$CUSTOM_CONFIG_DIR
fi
custom_hook=$custom_script_dir/custom-hook.m4
echo Generating generated-configure.sh
cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | autoconf -W all -I$script_dir - > $script_dir/generated-configure.sh
rm -rf autom4te.cache
if test -e $closed_script_dir/closed-hook.m4; then
# We have closed sources available; also generate configure script
# with closed hooks compiled in.
if $TEST -e $custom_hook; then
echo Generating custom generated-configure.sh
# We have custom sources available; also generate configure script
# with custom hooks compiled in.
cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | \
sed -e "s|AC_DEFUN_ONCE(\[CLOSED_HOOK\])|m4_include([$closed_script_dir/closed-hook.m4])|" | autoconf -W all -I$script_dir - > $closed_script_dir/generated-configure.sh
sed -e "s|AC_DEFUN_ONCE(\[CUSTOM_HOOK\])|m4_include([$custom_hook])|" | autoconf -W all -I$script_dir - > $custom_script_dir/generated-configure.sh
rm -rf autom4te.cache
else
echo No custom hook found: $custom_hook
fi

View File

@@ -34,7 +34,7 @@ AC_DEFUN([ADD_JVM_ARG_IF_OK],
fi
])
AC_DEFUN([WHICHCMD],
AC_DEFUN([SET_FULL_PATH],
[
# Translate "gcc -E" into "`which gcc` -E" ie
# extract the full path to the binary and at the
@@ -46,7 +46,7 @@ AC_DEFUN([WHICHCMD],
cdr="${tmp#* }"
# On windows we want paths without spaces.
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
WHICHCMD_SPACESAFE(car)
SET_FULL_PATH_SPACESAFE(car)
else
# "which" is not portable, but is used here
# because we know that the command exists!
@@ -66,15 +66,19 @@ AC_DEFUN([SPACESAFE],
HAS_SPACE=`echo "[$]$1" | grep " "`
if test "x$HAS_SPACE" != x; then
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
# First convert it to DOS-style, short mode (no spaces)
$1=`$CYGPATH -s -m -a "[$]$1"`
$1=`$CYGPATH -u "[$]$1"`
# Now it's case insensitive; let's make it lowercase to improve readability
$1=`$ECHO "[$]$1" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
# Now convert it back to Unix-stile (cygpath)
$1=`$CYGPATH -u "[$]$1"`
else
AC_MSG_ERROR([You cannot have spaces in $2! "[$]$1"])
fi
fi
])
AC_DEFUN([WHICHCMD_SPACESAFE],
AC_DEFUN([SET_FULL_PATH_SPACESAFE],
[
# Translate long cygdrive or C:\sdfsf path
# into a short mixed mode path that has no
@@ -148,15 +152,16 @@ AC_DEFUN_ONCE([BASIC_INIT],
AC_SUBST(CONFIGURE_COMMAND_LINE)
DATE_WHEN_CONFIGURED=`LANG=C date`
AC_SUBST(DATE_WHEN_CONFIGURED)
# Locate the directory of this script.
SCRIPT="[$]0"
REMOVE_SYMBOLIC_LINKS(SCRIPT)
AUTOCONF_DIR=`dirname [$]0`
])
# Setup basic configuration paths, and platform-specific stuff related to PATHs.
AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
[
# Locate the directory of this script.
SCRIPT="[$]0"
REMOVE_SYMBOLIC_LINKS(SCRIPT)
AUTOCONF_DIR=`dirname [$]0`
# Where is the source? It is located two levels above the configure script.
CURDIR="$PWD"
cd "$AUTOCONF_DIR/../.."
@@ -172,18 +177,12 @@ cd "$CURDIR"
SPACESAFE(SRC_ROOT,[the path to the source root])
SPACESAFE(CURDIR,[the path to the current directory])
])
AC_DEFUN_ONCE([BASIC_SETUP_SEARCHPATH],
[
if test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
# Add extra search paths on solaris for utilities like ar and as etc...
PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin"
fi
])
AC_DEFUN_ONCE([BASIC_SETUP_PATH_SEP],
[
# For cygwin we need cygpath first, since it is used everywhere.
AC_PATH_PROG(CYGPATH, cygpath)
PATH_SEP=":"
@@ -194,6 +193,36 @@ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
PATH_SEP=";"
fi
AC_SUBST(PATH_SEP)
# You can force the sys-root if the sys-root encoded into the cross compiler tools
# is not correct.
AC_ARG_WITH(sys-root, [AS_HELP_STRING([--with-sys-root],
[pass this sys-root to the compilers and linker (useful if the sys-root encoded in
the cross compiler tools is incorrect)])])
if test "x$with_sys_root" != x; then
SYS_ROOT=$with_sys_root
else
SYS_ROOT=/
fi
AC_SUBST(SYS_ROOT)
AC_ARG_WITH([tools-dir], [AS_HELP_STRING([--with-tools-dir],
[search this directory for (cross-compiling) compilers and tools])], [TOOLS_DIR=$with_tools_dir])
AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
[use this directory as base for tools-dir and sys-root (for cross-compiling)])],
[
if test "x$with_sys_root" != x; then
AC_MSG_ERROR([Cannot specify both --with-devkit and --with-sys-root at the same time])
fi
if test "x$with_tools_dir" != x; then
AC_MSG_ERROR([Cannot specify both --with-devkit and --with-tools-dir at the same time])
fi
TOOLS_DIR=$with_devkit/bin
SYS_ROOT=$with_devkit/$host_alias/libc
])
])
AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
@@ -236,7 +265,13 @@ AC_SUBST(OUTPUT_ROOT, $OUTPUT_ROOT)
AC_CONFIG_HEADERS([$OUTPUT_ROOT/config.h:$AUTOCONF_DIR/config.h.in])
# The spec.gmk file contains all variables for the make system.
AC_CONFIG_FILES([$OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in])
# The spec.sh file contains variables for compare{images|-objects}.sh scrips.
# The hotspot-spec.gmk file contains legacy variables for the hotspot make system.
AC_CONFIG_FILES([$OUTPUT_ROOT/hotspot-spec.gmk:$AUTOCONF_DIR/hotspot-spec.gmk.in])
# The bootcycle-spec.gmk file contains support for boot cycle builds.
AC_CONFIG_FILES([$OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in])
# The compare.sh is used to compare the build output to other builds.
AC_CONFIG_FILES([$OUTPUT_ROOT/compare.sh:$AUTOCONF_DIR/compare.sh.in])
# Spec.sh is currently used by compare-objects.sh
AC_CONFIG_FILES([$OUTPUT_ROOT/spec.sh:$AUTOCONF_DIR/spec.sh.in])
# The generated Makefile knows where the spec.gmk is and where the source is.
# You can run make from the OUTPUT_ROOT, or from the top-level Makefile
@@ -261,6 +296,79 @@ AC_SUBST(BUILD_LOG_WRAPPER)
#%%% Simple tools %%%
# Check if we have found a usable version of make
# $1: the path to a potential make binary (or empty)
# $2: the description on how we found this
AC_DEFUN([BASIC_CHECK_MAKE_VERSION],
[
MAKE_CANDIDATE="$1"
DESCRIPTION="$2"
if test "x$MAKE_CANDIDATE" != x; then
AC_MSG_NOTICE([Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION])
SET_FULL_PATH(MAKE_CANDIDATE)
MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
if test "x$IS_GNU_MAKE" = x; then
AC_MSG_NOTICE([Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring.])
else
IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[[12346789]]'`
if test "x$IS_MODERN_MAKE" = x; then
AC_MSG_NOTICE([Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring.])
else
FOUND_MAKE=$MAKE_CANDIDATE
fi
fi
fi
])
# Goes looking for a usable version of GNU make.
AC_DEFUN([BASIC_CHECK_GNU_MAKE],
[
# We need to find a recent version of GNU make. Especially on Solaris, this can be tricky.
if test "x$MAKE" != x; then
# User has supplied a make, test it.
if test ! -f "$MAKE"; then
AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not found.])
fi
BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=])
if test "x$FOUND_MAKE" = x; then
AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make 3.81 or newer.])
fi
else
# Try our hardest to locate a correct version of GNU make
AC_PATH_PROGS(CHECK_GMAKE, gmake)
BASIC_CHECK_MAKE_VERSION("$CHECK_GMAKE", [gmake in PATH])
if test "x$FOUND_MAKE" = x; then
AC_PATH_PROGS(CHECK_MAKE, make)
BASIC_CHECK_MAKE_VERSION("$CHECK_MAKE", [make in PATH])
fi
if test "x$FOUND_MAKE" = x; then
if test "x$TOOLS_DIR" != x; then
# We have a tools-dir, check that as well before giving up.
OLD_PATH=$PATH
PATH=$TOOLS_DIR:$PATH
AC_PATH_PROGS(CHECK_TOOLSDIR_GMAKE, gmake)
BASIC_CHECK_MAKE_VERSION("$CHECK_TOOLSDIR_GMAKE", [gmake in tools-dir])
if test "x$FOUND_MAKE" = x; then
AC_PATH_PROGS(CHECK_TOOLSDIR_MAKE, make)
BASIC_CHECK_MAKE_VERSION("$CHECK_TOOLSDIR_MAKE", [make in tools-dir])
fi
PATH=$OLD_PATH
fi
fi
if test "x$FOUND_MAKE" = x; then
AC_MSG_ERROR([Cannot find GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure.])
fi
fi
MAKE=$FOUND_MAKE
AC_SUBST(MAKE)
AC_MSG_NOTICE([Using GNU make 3.81 (or later) at $FOUND_MAKE (version: $MAKE_VERSION_STRING)])
])
AC_DEFUN([BASIC_CHECK_FIND_DELETE],
[
# Test if find supports -delete
@@ -283,10 +391,30 @@ AC_DEFUN([BASIC_CHECK_FIND_DELETE],
rmdir $DELETEDIR
])
# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
# $1: variable to check
# $2: executable name to print in warning (optional)
AC_DEFUN([CHECK_NONEMPTY],
[
# Test that variable $1 is not empty.
if test "" = "[$]$1"; then AC_MSG_ERROR(Could not find translit($1,A-Z,a-z) !); fi
if test "x[$]$1" = x; then
if test "x$2" = x; then
PROG_NAME=translit($1,A-Z,a-z)
else
PROG_NAME=$2
fi
AC_MSG_NOTICE([Could not find $PROG_NAME!])
AC_MSG_ERROR([Cannot continue])
fi
])
# Does AC_PATH_PROG followed by CHECK_NONEMPTY.
# Arguments as AC_PATH_PROG:
# $1: variable to set
# $2: executable name to look for
AC_DEFUN([BASIC_REQUIRE_PROG],
[
AC_PATH_PROGS($1, $2)
CHECK_NONEMPTY($1, $2)
])
AC_DEFUN_ONCE([BASIC_SETUP_TOOLS],
@@ -295,90 +423,68 @@ AC_DEFUN_ONCE([BASIC_SETUP_TOOLS],
# and can be expected to be found in the default PATH. These tools are
# used by configure. Nor are these tools expected to be found in the
# devkit from the builddeps server either, since they are
# needed to download the devkit.
# needed to download the devkit.
# First are all the simple required tools.
BASIC_REQUIRE_PROG(BASENAME, basename)
BASIC_REQUIRE_PROG(CAT, cat)
BASIC_REQUIRE_PROG(CHMOD, chmod)
BASIC_REQUIRE_PROG(CMP, cmp)
BASIC_REQUIRE_PROG(CP, cp)
BASIC_REQUIRE_PROG(CPIO, cpio)
BASIC_REQUIRE_PROG(CUT, cut)
BASIC_REQUIRE_PROG(DATE, date)
BASIC_REQUIRE_PROG(DF, df)
BASIC_REQUIRE_PROG(DIFF, [gdiff diff])
BASIC_REQUIRE_PROG(ECHO, echo)
BASIC_REQUIRE_PROG(EXPR, expr)
BASIC_REQUIRE_PROG(FILE, file)
BASIC_REQUIRE_PROG(FIND, find)
BASIC_REQUIRE_PROG(HEAD, head)
BASIC_REQUIRE_PROG(LN, ln)
BASIC_REQUIRE_PROG(LS, ls)
BASIC_REQUIRE_PROG(MKDIR, mkdir)
BASIC_REQUIRE_PROG(MV, mv)
BASIC_REQUIRE_PROG(PRINTF, printf)
BASIC_REQUIRE_PROG(SH, sh)
BASIC_REQUIRE_PROG(SORT, sort)
BASIC_REQUIRE_PROG(TAIL, tail)
BASIC_REQUIRE_PROG(TAR, tar)
BASIC_REQUIRE_PROG(TEE, tee)
BASIC_REQUIRE_PROG(TOUCH, touch)
BASIC_REQUIRE_PROG(TR, tr)
BASIC_REQUIRE_PROG(UNIQ, uniq)
BASIC_REQUIRE_PROG(UNZIP, unzip)
BASIC_REQUIRE_PROG(WC, wc)
BASIC_REQUIRE_PROG(XARGS, xargs)
BASIC_REQUIRE_PROG(ZIP, zip)
# Then required tools that require some special treatment.
AC_PROG_AWK
CHECK_NONEMPTY(AWK)
AC_PATH_PROG(CAT, cat)
CHECK_NONEMPTY(CAT)
AC_PATH_PROG(CHMOD, chmod)
CHECK_NONEMPTY(CHMOD)
AC_PATH_PROG(CP, cp)
CHECK_NONEMPTY(CP)
AC_PATH_PROG(CPIO, cpio)
CHECK_NONEMPTY(CPIO)
AC_PATH_PROG(CUT, cut)
CHECK_NONEMPTY(CUT)
AC_PATH_PROG(DATE, date)
CHECK_NONEMPTY(DATE)
AC_PATH_PROG(DF, df)
CHECK_NONEMPTY(DF)
AC_PATH_PROG(DIFF, diff)
CHECK_NONEMPTY(DIFF)
# Warning echo is really, really unportable!!!!! Different
# behaviour in bash and dash and in a lot of other shells!
# Use printf for serious work!
AC_PATH_PROG(ECHO, echo)
CHECK_NONEMPTY(ECHO)
AC_PROG_GREP
CHECK_NONEMPTY(GREP)
AC_PROG_EGREP
CHECK_NONEMPTY(EGREP)
AC_PROG_FGREP
CHECK_NONEMPTY(FGREP)
AC_PROG_SED
CHECK_NONEMPTY(SED)
AC_PATH_PROGS(NAWK, [nawk gawk awk])
CHECK_NONEMPTY(NAWK)
BASIC_CHECK_GNU_MAKE
BASIC_REQUIRE_PROG(RM, rm)
RM="$RM -f"
AC_PATH_PROG(FIND, find)
CHECK_NONEMPTY(FIND)
BASIC_CHECK_FIND_DELETE
AC_SUBST(FIND_DELETE)
AC_PROG_GREP
CHECK_NONEMPTY(GREP)
AC_PATH_PROG(HEAD, head)
CHECK_NONEMPTY(HEAD)
AC_PATH_PROG(LN, ln)
CHECK_NONEMPTY(LN)
AC_PATH_PROG(LS, ls)
CHECK_NONEMPTY(LS)
AC_PATH_PROGS(MAKE, [gmake make])
CHECK_NONEMPTY(MAKE)
MAKE_VERSION=`$MAKE --version | head -n 1 | grep '3.8[[12346789]]'`
if test "x$MAKE_VERSION" = x; then
AC_MSG_ERROR([You must use GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure.])
fi
AC_PATH_PROG(MKDIR, mkdir)
CHECK_NONEMPTY(MKDIR)
AC_PATH_PROG(MV, mv)
CHECK_NONEMPTY(MV)
AC_PATH_PROGS(NAWK, [nawk gawk awk])
CHECK_NONEMPTY(NAWK)
AC_PATH_PROG(PRINTF, printf)
CHECK_NONEMPTY(PRINTF)
# Non-required basic tools
AC_PATH_PROG(THEPWDCMD, pwd)
AC_PATH_PROG(RM, rm)
CHECK_NONEMPTY(RM)
RM="$RM -f"
AC_PROG_SED
CHECK_NONEMPTY(SED)
AC_PATH_PROG(SH, sh)
CHECK_NONEMPTY(SH)
AC_PATH_PROG(SORT, sort)
CHECK_NONEMPTY(SORT)
AC_PATH_PROG(TAR, tar)
CHECK_NONEMPTY(TAR)
AC_PATH_PROG(TAIL, tail)
CHECK_NONEMPTY(TAIL)
AC_PATH_PROG(TEE, tee)
CHECK_NONEMPTY(TEE)
AC_PATH_PROG(TR, tr)
CHECK_NONEMPTY(TR)
AC_PATH_PROG(TOUCH, touch)
CHECK_NONEMPTY(TOUCH)
AC_PATH_PROG(WC, wc)
CHECK_NONEMPTY(WC)
AC_PATH_PROG(XARGS, xargs)
CHECK_NONEMPTY(XARGS)
AC_PATH_PROG(ZIP, zip)
CHECK_NONEMPTY(ZIP)
AC_PATH_PROG(UNZIP, unzip)
CHECK_NONEMPTY(UNZIP)
AC_PATH_PROG(LDD, ldd)
if test "x$LDD" = "x"; then
# List shared lib dependencies is used for
@@ -390,16 +496,11 @@ AC_PATH_PROG(OTOOL, otool)
if test "x$OTOOL" = "x"; then
OTOOL="true"
fi
AC_PATH_PROG(READELF, readelf)
AC_PATH_PROG(EXPR, expr)
CHECK_NONEMPTY(EXPR)
AC_PATH_PROG(FILE, file)
CHECK_NONEMPTY(FILE)
AC_PATH_PROGS(READELF, [readelf greadelf])
AC_PATH_PROGS(OBJDUMP, [objdump gobjdump])
AC_PATH_PROG(HG, hg)
])
AC_DEFUN_ONCE([BASIC_COMPILE_UNCYGDRIVE],
[
# When using cygwin, we need a wrapper binary that renames
@@ -433,6 +534,8 @@ if test "x$OPENJDK_BUILD_OS" = xwindows; then
fi
AC_MSG_RESULT([yes])
rm -f $OUTPUT_ROOT/uncygdrive?.??? $OUTPUT_ROOT/uncygdrive.obj
# The path to uncygdrive to use should be Unix-style
UNCYGDRIVE="$OUTPUT_ROOT/uncygdrive.exe"
fi
AC_SUBST(UNCYGDRIVE)

View File

@@ -23,22 +23,186 @@
# questions.
#
# Fixes paths on windows to be mixed mode short.
AC_DEFUN([BOOTJDK_WIN_FIX_PATH],
# Execute the check given as argument, and verify the result
# If the Boot JDK was previously found, do nothing
# $1 A command line (typically autoconf macro) to execute
AC_DEFUN([BOOTJDK_DO_CHECK],
[
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
AC_PATH_PROG(CYGPATH, cygpath)
tmp="[$]$1"
# Convert to C:/ mixed style path without spaces.
tmp=`$CYGPATH -s -m "$tmp"`
$1="$tmp"
if test "x$BOOT_JDK_FOUND" = xno; then
# Now execute the test
$1
# If previous step claimed to have found a JDK, check it to see if it seems to be valid.
if test "x$BOOT_JDK_FOUND" = xmaybe; then
# Do we have a bin/java?
if test ! -x "$BOOT_JDK/bin/java"; then
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring])
BOOT_JDK_FOUND=no
else
# Do we have a bin/javac?
if test ! -x "$BOOT_JDK/bin/javac"; then
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring])
AC_MSG_NOTICE([(This might be an JRE instead of an JDK)])
BOOT_JDK_FOUND=no
else
# Do we have an rt.jar? (On MacOSX it is called classes.jar)
if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring])
BOOT_JDK_FOUND=no
else
# Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
# Extra M4 quote needed to protect [] in grep expression.
[FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'`]
if test "x$FOUND_VERSION_78" = x; then
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring])
AC_MSG_NOTICE([(Your Boot JDK must be version 7 or 8)])
BOOT_JDK_FOUND=no
else
# We're done! :-)
BOOT_JDK_FOUND=yes
SPACESAFE(BOOT_JDK,[the path to the Boot JDK])
AC_MSG_CHECKING([for Boot JDK])
AC_MSG_RESULT([$BOOT_JDK ($BOOT_JDK_VERSION)])
fi # end check jdk version
fi # end check rt.jar
fi # end check javac
fi # end check java
fi # end check boot jdk found
fi
])
# Test: Is bootjdk explicitely set by command line arguments?
AC_DEFUN([BOOTJDK_CHECK_ARGUMENTS],
[
if test "x$with_boot_jdk" != x; then
BOOT_JDK=$with_boot_jdk
BOOT_JDK_FOUND=maybe
AC_MSG_NOTICE([Found potential Boot JDK using configure arguments])
fi
])
# Test: Is bootjdk available from builddeps?
AC_DEFUN([BOOTJDK_CHECK_BUILDDEPS],
[
BDEPS_CHECK_MODULE(BOOT_JDK, bootjdk, xxx, [BOOT_JDK_FOUND=maybe], [BOOT_JDK_FOUND=no])
])
# Test: Is $JAVA_HOME set?
AC_DEFUN([BOOTJDK_CHECK_JAVA_HOME],
[
if test "x$JAVA_HOME" != x; then
if test "x$OPENJDK_TARGET_OS" = xwindows; then
# On Windows, JAVA_HOME is likely in DOS-style
JAVA_HOME_PROCESSED="`$CYGPATH -u "$JAVA_HOME"`"
else
JAVA_HOME_PROCESSED="$JAVA_HOME"
fi
if test ! -d "$JAVA_HOME_PROCESSED"; then
AC_MSG_NOTICE([Your JAVA_HOME points to a non-existing directory!])
else
# Aha, the user has set a JAVA_HOME
# let us use that as the Boot JDK.
BOOT_JDK="$JAVA_HOME_PROCESSED"
BOOT_JDK_FOUND=maybe
AC_MSG_NOTICE([Found potential Boot JDK using JAVA_HOME])
fi
fi
])
AC_DEFUN([BOOTJDK_MISSING_ERROR],
# Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
AC_DEFUN([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK],
[
AC_MSG_NOTICE([This might be fixed by explicitely setting --with-boot-jdk])
AC_MSG_ERROR([Cannot continue])
AC_PATH_PROG(JAVAC_CHECK, javac)
AC_PATH_PROG(JAVA_CHECK, java)
BINARY="$JAVAC_CHECK"
if test "x$JAVAC_CHECK" = x; then
BINARY="$JAVA_CHECK"
fi
if test "x$BINARY" != x; then
# So there is a java(c) binary, it might be part of a JDK.
# Lets find the JDK/JRE directory by following symbolic links.
# Linux/GNU systems often have links from /usr/bin/java to
# /etc/alternatives/java to the real JDK binary.
SET_FULL_PATH_SPACESAFE(BINARY)
REMOVE_SYMBOLIC_LINKS(BINARY)
BOOT_JDK=`dirname "$BINARY"`
BOOT_JDK=`cd "$BOOT_JDK/.."; pwd`
if test -x "$BOOT_JDK/bin/javac" && test -x "$BOOT_JDK/bin/java"; then
# Looks like we found ourselves an JDK
BOOT_JDK_FOUND=maybe
AC_MSG_NOTICE([Found potential Boot JDK using java(c) in PATH])
fi
fi
])
# Test: Is there a /usr/libexec/java_home? (Typically on MacOSX)
AC_DEFUN([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME],
[
if test -x /usr/libexec/java_home; then
BOOT_JDK=`/usr/libexec/java_home`
BOOT_JDK_FOUND=maybe
AC_MSG_NOTICE([Found potential Boot JDK using /usr/libexec/java_home])
fi
])
# Look for a jdk in the given path. If there are multiple, try to select the newest.
# If found, set BOOT_JDK and BOOT_JDK_FOUND.
# $1 = Path to directory containing jdk installations.
# $2 = String to append to the found JDK directory to get the proper JDK home
AC_DEFUN([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY],
[
BOOT_JDK_PREFIX="$1"
BOOT_JDK_SUFFIX="$2"
BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
if test "x$BEST_JDK_FOUND" != x; then
BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
if test -d "$BOOT_JDK"; then
BOOT_JDK_FOUND=maybe
AC_MSG_NOTICE([Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)])
fi
fi
])
# Call BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY, but use the given
# environmental variable as base for where to look.
# $1 Name of an environmal variable, assumed to point to the Program Files directory.
AC_DEFUN([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY],
[
if test "x[$]$1" != x; then
BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([`$CYGPATH -u "[$]$1"`/Java])
fi
])
# Test: Is there a JDK installed in default, well-known locations?
AC_DEFUN([BOOTJDK_CHECK_WELL_KNOWN_LOCATIONS],
[
if test "x$OPENJDK_TARGET_OS" = xwindows; then
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY([ProgramW6432])])
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY([PROGRAMW6432])])
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY([PROGRAMFILES])])
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY([ProgramFiles])])
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/cygdrive/c/Program Files/Java])])
elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/Library/Java/JavaVirtualMachines],[/Contents/Home])])
BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/System/Library/Java/JavaVirtualMachines],[/Contents/Home])])
fi
])
# Check that a command-line tool in the Boot JDK is correct
# $1 = name of variable to assign
# $2 = name of binary
AC_DEFUN([BOOTJDK_CHECK_TOOL_IN_BOOTJDK],
[
AC_MSG_CHECKING([for $2 in Boot JDK])
$1=$BOOT_JDK/bin/$2
if test ! -x [$]$1; then
AC_MSG_RESULT(not found)
AC_MSG_NOTICE([Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk])
AC_MSG_ERROR([Could not find $2 in the Boot JDK])
fi
AC_MSG_RESULT(ok)
])
###############################################################################
@@ -51,204 +215,74 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
BOOT_JDK_FOUND=no
AC_ARG_WITH(boot-jdk, [AS_HELP_STRING([--with-boot-jdk],
[path to Boot JDK (used to bootstrap build) @<:@probed@:>@])])
if test "x$with_boot_jdk" != x; then
BOOT_JDK=$with_boot_jdk
BOOT_JDK_FOUND=yes
# We look for the Boot JDK through various means, going from more certain to
# more of a guess-work. After each test, BOOT_JDK_FOUND is set to "yes" if
# we detected something (if so, the path to the jdk is in BOOT_JDK). But we
# must check if this is indeed valid; otherwise we'll continue looking.
# Test: Is bootjdk explicitely set by command line arguments?
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_ARGUMENTS])
if test "x$with_boot_jdk" != x && test "x$BOOT_JDK_FOUND" = xno; then
# Having specified an argument which is incorrect will produce an instant failure;
# we should not go on looking
AC_MSG_ERROR([The path given by --with-boot-jdk does not contain a valid Boot JDK])
fi
# Test: Is bootjdk available from builddeps?
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_BUILDDEPS])
# Test: Is $JAVA_HOME set?
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_HOME])
# Test: Is there a /usr/libexec/java_home? (Typically on MacOSX)
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME])
# Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK])
# Test: Is there a JDK installed in default, well-known locations?
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_WELL_KNOWN_LOCATIONS])
# If we haven't found anything yet, we've truly lost. Give up.
if test "x$BOOT_JDK_FOUND" = xno; then
BDEPS_CHECK_MODULE(BOOT_JDK, boot-jdk, xxx, [BOOT_JDK_FOUND=yes], [BOOT_JDK_FOUND=no])
HELP_MSG_MISSING_DEPENDENCY([openjdk])
AC_MSG_NOTICE([Could not find a valid Boot JDK. $HELP_MSG])
AC_MSG_NOTICE([This might be fixed by explicitely setting --with-boot-jdk])
AC_MSG_ERROR([Cannot continue])
fi
if test "x$BOOT_JDK_FOUND" = xno; then
if test "x$JAVA_HOME" != x; then
if test ! -d "$JAVA_HOME"; then
AC_MSG_NOTICE([Your JAVA_HOME points to a non-existing directory!])
BOOTJDK_MISSING_ERROR
fi
# Aha, the user has set a JAVA_HOME
# let us use that as the Boot JDK.
BOOT_JDK="$JAVA_HOME"
BOOT_JDK_FOUND=yes
# To be on the safe side, lets check that it is a JDK.
if test -x "$BOOT_JDK/bin/javac" && test -x "$BOOT_JDK/bin/java"; then
JAVAC="$BOOT_JDK/bin/javac"
JAVA="$BOOT_JDK/bin/java"
BOOT_JDK_FOUND=yes
else
AC_MSG_NOTICE([Your JAVA_HOME points to a JRE! The build needs a JDK! Please point JAVA_HOME to a JDK. JAVA_HOME=[$]JAVA_HOME])
BOOTJDK_MISSING_ERROR
fi
fi
fi
if test "x$BOOT_JDK_FOUND" = xno; then
AC_PATH_PROG(JAVAC_CHECK, javac)
AC_PATH_PROG(JAVA_CHECK, java)
BINARY="$JAVAC_CHECK"
if test "x$JAVAC_CHECK" = x; then
BINARY="$JAVA_CHECK"
fi
if test "x$BINARY" != x; then
# So there is a java(c) binary, it might be part of a JDK.
# Lets find the JDK/JRE directory by following symbolic links.
# Linux/GNU systems often have links from /usr/bin/java to
# /etc/alternatives/java to the real JDK binary.
WHICHCMD_SPACESAFE(BINARY,[path to javac])
REMOVE_SYMBOLIC_LINKS(BINARY)
BOOT_JDK=`dirname $BINARY`
BOOT_JDK=`cd $BOOT_JDK/..; pwd`
if test -x $BOOT_JDK/bin/javac && test -x $BOOT_JDK/bin/java; then
JAVAC=$BOOT_JDK/bin/javac
JAVA=$BOOT_JDK/bin/java
BOOT_JDK_FOUND=yes
fi
fi
fi
if test "x$BOOT_JDK_FOUND" = xno; then
# Try the MacOSX way.
if test -x /usr/libexec/java_home; then
BOOT_JDK=`/usr/libexec/java_home`
if test -x $BOOT_JDK/bin/javac && test -x $BOOT_JDK/bin/java; then
JAVAC=$BOOT_JDK/bin/javac
JAVA=$BOOT_JDK/bin/java
BOOT_JDK_FOUND=yes
fi
fi
fi
if test "x$BOOT_JDK_FOUND" = xno; then
AC_PATH_PROG(JAVA_CHECK, java)
if test "x$JAVA_CHECK" != x; then
# There is a java in the path. But apparently we have not found a javac
# in the path, since that would have been tested earlier.
if test "x$OPENJDK_TARGET_OS" = xwindows; then
# Now if this is a windows platform. The default installation of a JDK
# actually puts the JRE in the path and keeps the JDK out of the path!
# Go look in the default installation location.
BOOT_JDK=/cygdrive/c/Program\ Files/Java/`ls /cygdrive/c/Program\ Files/Java | grep jdk | sort -r | head --lines 1`
if test -d "$BOOT_JDK"; then
BOOT_JDK_FOUND=yes
fi
fi
if test "x$BOOT_JDK_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([openjdk])
AC_MSG_NOTICE([Found a JRE, not not a JDK! Please remove the JRE from your path and put a JDK there instead. $HELP_MSG])
BOOTJDK_MISSING_ERROR
fi
else
HELP_MSG_MISSING_DEPENDENCY([openjdk])
AC_MSG_NOTICE([Could not find a JDK. $HELP_MSG])
BOOTJDK_MISSING_ERROR
fi
fi
BOOTJDK_WIN_FIX_PATH(BOOT_JDK)
# Now see if we can find the rt.jar, or its nearest equivalent.
# Setup proper paths for what we found
BOOT_RTJAR="$BOOT_JDK/jre/lib/rt.jar"
SPACESAFE(BOOT_RTJAR,[the path to the Boot JDK rt.jar (or nearest equivalent)])
BOOT_TOOLSJAR="$BOOT_JDK/lib/tools.jar"
SPACESAFE(BOOT_TOOLSJAR,[the path to the Boot JDK tools.jar (or nearest equivalent)])
if test ! -f $BOOT_RTJAR; then
if test ! -f "$BOOT_RTJAR"; then
# On MacOSX it is called classes.jar
BOOT_RTJAR=$BOOT_JDK/../Classes/classes.jar
if test ! -f $BOOT_RTJAR; then
AC_MSG_NOTICE([Cannot find the rt.jar or its equivalent!])
AC_MSG_NOTICE([This typically means that configure failed to automatically find a suitable Boot JDK])
BOOTJDK_MISSING_ERROR
BOOT_RTJAR="$BOOT_JDK/../Classes/classes.jar"
if test -f "$BOOT_RTJAR"; then
# Remove the ..
BOOT_RTJAR="`cd ${BOOT_RTJAR%/*} && pwd`/${BOOT_RTJAR##*/}"
fi
# Remove the ..
BOOT_RTJAR="`cd ${BOOT_RTJAR%/*} && pwd`/${BOOT_RTJAR##*/}"
# The tools.jar is part of classes.jar
BOOT_TOOLSJAR="$BOOT_RTJAR"
fi
AC_SUBST(BOOT_JDK)
BOOT_TOOLSJAR="$BOOT_JDK/lib/tools.jar"
BOOT_JDK="$BOOT_JDK"
AC_SUBST(BOOT_RTJAR)
AC_SUBST(BOOT_TOOLSJAR)
AC_MSG_CHECKING([for Boot JDK])
AC_MSG_RESULT([$BOOT_JDK])
AC_MSG_CHECKING([for Boot rt.jar])
AC_MSG_RESULT([$BOOT_RTJAR])
AC_MSG_CHECKING([for Boot tools.jar])
AC_MSG_RESULT([$BOOT_TOOLSJAR])
AC_SUBST(BOOT_JDK)
# Use the java tool from the Boot JDK.
AC_MSG_CHECKING([for java in Boot JDK])
JAVA=$BOOT_JDK/bin/java
if test ! -x $JAVA; then
AC_MSG_NOTICE([Could not find a working java])
BOOTJDK_MISSING_ERROR
fi
BOOT_JDK_VERSION=`$JAVA -version 2>&1 | head -n 1`
AC_MSG_RESULT([yes $BOOT_JDK_VERSION])
AC_SUBST(JAVA)
# Setup tools from the Boot JDK.
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA,java)
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC,javac)
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAH,javah)
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAP,javap)
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR,jar)
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(RMIC,rmic)
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(NATIVE2ASCII,native2ascii)
# Extra M4 quote needed to protect [] in grep expression.
[FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'`]
if test "x$FOUND_VERSION_78" = x; then
HELP_MSG_MISSING_DEPENDENCY([openjdk])
AC_MSG_NOTICE([Your boot-jdk must be version 7 or 8. $HELP_MSG])
BOOTJDK_MISSING_ERROR
fi
# Finally, set some other options...
# When compiling code to be executed by the Boot JDK, force jdk7 compatibility.
BOOT_JDK_SOURCETARGET="-source 7 -target 7"
AC_SUBST(BOOT_JDK_SOURCETARGET)
# Use the javac tool from the Boot JDK.
AC_MSG_CHECKING([for javac in Boot JDK])
JAVAC=$BOOT_JDK/bin/javac
if test ! -x $JAVAC; then
AC_MSG_ERROR([Could not find a working javac])
fi
AC_MSG_RESULT(yes)
AC_SUBST(JAVAC)
AC_SUBST(JAVAC_FLAGS)
# Use the javah tool from the Boot JDK.
AC_MSG_CHECKING([for javah in Boot JDK])
JAVAH=$BOOT_JDK/bin/javah
if test ! -x $JAVAH; then
AC_MSG_NOTICE([Could not find a working javah])
BOOTJDK_MISSING_ERROR
fi
AC_MSG_RESULT(yes)
AC_SUBST(JAVAH)
# Use the jar tool from the Boot JDK.
AC_MSG_CHECKING([for jar in Boot JDK])
JAR=$BOOT_JDK/bin/jar
if test ! -x $JAR; then
AC_MSG_NOTICE([Could not find a working jar])
BOOTJDK_MISSING_ERROR
fi
AC_SUBST(JAR)
AC_MSG_RESULT(yes)
# Use the rmic tool from the Boot JDK.
AC_MSG_CHECKING([for rmic in Boot JDK])
RMIC=$BOOT_JDK/bin/rmic
if test ! -x $RMIC; then
AC_MSG_NOTICE([Could not find a working rmic])
BOOTJDK_MISSING_ERROR
fi
AC_SUBST(RMIC)
AC_MSG_RESULT(yes)
# Use the native2ascii tool from the Boot JDK.
AC_MSG_CHECKING([for native2ascii in Boot JDK])
NATIVE2ASCII=$BOOT_JDK/bin/native2ascii
if test ! -x $NATIVE2ASCII; then
AC_MSG_NOTICE([Could not find a working native2ascii])
BOOTJDK_MISSING_ERROR
fi
AC_MSG_RESULT(yes)
AC_SUBST(NATIVE2ASCII)
])
AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK_ARGUMENTS],

View File

@@ -0,0 +1,43 @@
#
# Copyright (c) 2011, 2012, 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.
#
# Support for building boot cycle builds
# First include the real base spec.gmk file
include @SPEC@
# Check that the user did not try to specify a different java to use for compiling.
ifneq ($(firstword $(SJAVAC_SERVER_JAVA)),$(firstword $(JAVA)))
$(error Bootcycle builds are not possible if --with-sjavac-server-java is specified)
endif
# Override specific values to do a boot cycle build
# The bootcycle build has a different output directory
BUILD_OUTPUT:=@BUILD_OUTPUT@/bootcycle-build
# Use a different Boot JDK
BOOT_JDK:=@BUILD_OUTPUT@/images/j2sdk-image
BOOT_RTJAR:=@BUILD_OUTPUT@/images/j2sdk-image/jre/lib/rt.jar

View File

@@ -22,17 +22,39 @@
# questions.
#
# This is a wrapper for the config.guess from autoconf. The latter does not properly
# detect amd64 systems, since that require isainfo instead of uname. Instead of patching
# the autoconf system (which might easily get lost in a future update), we wrap it and
# fix the broken property, if needed.
# This is a wrapper for the config.guess from autoconf. The latter does not
# properly detect 64 bit systems on all platforms. Instead of patching the
# autoconf system (which might easily get lost in a future update), we wrap it
# and fix the broken property, if needed.
DIR=`dirname $0`
OUT=`. $DIR/autoconf-config.guess`
# Test and fix solaris on x86_64
echo $OUT | grep i386-pc-solaris > /dev/null 2> /dev/null
if test $? = 0; then
# isainfo -n returns either i386 or amd64 on Intel systems
# isainfo -n returns either i386 or amd64
REAL_CPU=`isainfo -n`
OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
fi
# Test and fix solaris on sparcv9
echo $OUT | grep sparc-sun-solaris > /dev/null 2> /dev/null
if test $? = 0; then
# isainfo -n returns either sparc or sparcv9
REAL_CPU=`isainfo -n`
OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
fi
# Test and fix cygwin on x86_64
echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
if test $? = 0; then
case `echo $PROCESSOR_IDENTIFIER | cut -f1 -d' '` in
intel64|Intel64|INTEL64|em64t|EM64T|amd64|AMD64|8664|x86_64)
REAL_CPU=x86_64
OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
;;
esac
fi
echo $OUT

View File

@@ -30,27 +30,19 @@ AC_DEFUN([BPERF_CHECK_CORES],
FOUND_CORES=no
if test -f /proc/cpuinfo; then
# Looks like a Linux system
# Looks like a Linux (or cygwin) system
NUM_CORES=`cat /proc/cpuinfo | grep -c processor`
FOUND_CORES=yes
fi
if test -x /usr/sbin/psrinfo; then
elif test -x /usr/sbin/psrinfo; then
# Looks like a Solaris system
NUM_CORES=`LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line`
FOUND_CORES=yes
fi
if test -x /usr/sbin/system_profiler; then
elif test -x /usr/sbin/system_profiler; then
# Looks like a MacOSX system
NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'`
FOUND_CORES=yes
fi
if test "x$build_os" = xwindows; then
NUM_CORES=4
fi
# For c/c++ code we run twice as many concurrent build
# jobs than we have cores, otherwise we will stall on io.
CONCURRENT_BUILD_JOBS=`expr $NUM_CORES \* 2`
@@ -66,31 +58,26 @@ AC_DEFUN([BPERF_CHECK_CORES],
AC_DEFUN([BPERF_CHECK_MEMORY_SIZE],
[
AC_MSG_CHECKING([for memory size])
# Default to 1024MB
# Default to 1024 MB
MEMORY_SIZE=1024
FOUND_MEM=no
if test -f /proc/cpuinfo; then
# Looks like a Linux system
if test -f /proc/meminfo; then
# Looks like a Linux (or cygwin) system
MEMORY_SIZE=`cat /proc/meminfo | grep MemTotal | awk '{print [$]2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE / 1024`
FOUND_MEM=yes
fi
if test -x /usr/sbin/prtconf; then
elif test -x /usr/sbin/prtconf; then
# Looks like a Solaris system
MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print [$]3 }'`
FOUND_MEM=yes
fi
if test -x /usr/sbin/system_profiler; then
elif test -x /usr/sbin/system_profiler; then
# Looks like a MacOSX system
MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
FOUND_MEM=yes
fi
if test "x$build_os" = xwindows; then
elif test "x$build_os" = xwindows; then
# Windows, but without cygwin
MEMORY_SIZE=`systeminfo | grep 'Total Physical Memory:' | awk '{ print [$]4 }' | sed 's/,//'`
FOUND_MEM=yes
fi
@@ -98,7 +85,7 @@ AC_DEFUN([BPERF_CHECK_MEMORY_SIZE],
if test "x$FOUND_MEM" = xyes; then
AC_MSG_RESULT([$MEMORY_SIZE MB])
else
AC_MSG_RESULT([could not detect memory size defaulting to 1024MB!])
AC_MSG_RESULT([could not detect memory size defaulting to 1024 MB!])
fi
])
@@ -240,46 +227,30 @@ AC_SUBST(USE_PRECOMPILED_HEADER)
AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC],
[
AC_ARG_WITH(server-java, [AS_HELP_STRING([--with-server-java],
[use this java binary for running the javac background server and other long running java tasks in the build process,
e.g. ---with-server-java="/opt/jrockit/bin/java -server"])])
AC_ARG_WITH(sjavac-server-java, [AS_HELP_STRING([--with-sjavac-server-java],
[use this java binary for running the sjavac background server and other long running java tasks in the build process,
e.g. ---with-sjavac-server-java="/opt/jrockit/bin/java -server"])])
if test "x$with_server_java" != x; then
SERVER_JAVA="$with_server_java"
FOUND_VERSION=`$SERVER_JAVA -version 2>&1 | grep " version \""`
if test "x$with_sjavac_server_java" != x; then
SJAVAC_SERVER_JAVA="$with_sjavac_server_java"
FOUND_VERSION=`$SJAVAC_SERVER_JAVA -version 2>&1 | grep " version \""`
if test "x$FOUND_VERSION" = x; then
AC_MSG_ERROR([Could not execute server java: $SERVER_JAVA])
AC_MSG_ERROR([Could not execute server java: $SJAVAC_SERVER_JAVA])
fi
else
SERVER_JAVA=""
SJAVAC_SERVER_JAVA=""
# Hotspot specific options.
ADD_JVM_ARG_IF_OK([-XX:+UseParallelOldGC],SERVER_JAVA,[$JAVA])
ADD_JVM_ARG_IF_OK([-verbosegc],SERVER_JAVA,[$JAVA])
ADD_JVM_ARG_IF_OK([-verbosegc],SJAVAC_SERVER_JAVA,[$JAVA])
# JRockit specific options.
ADD_JVM_ARG_IF_OK([-Xverbose:gc],SERVER_JAVA,[$JAVA])
SERVER_JAVA="$JAVA $SERVER_JAVA"
ADD_JVM_ARG_IF_OK([-Xverbose:gc],SJAVAC_SERVER_JAVA,[$JAVA])
SJAVAC_SERVER_JAVA="$JAVA $SJAVAC_SERVER_JAVA"
fi
AC_SUBST(SERVER_JAVA)
AC_SUBST(SJAVAC_SERVER_JAVA)
AC_MSG_CHECKING([whether to use shared server for javac])
AC_ARG_ENABLE([javac-server], [AS_HELP_STRING([--enable-javac-server],
[enable the shared javac server during the build process @<:@disabled@:>@])],
[ENABLE_JAVAC_SERVER="${enableval}"], [ENABLE_JAVAC_SERVER='no'])
AC_MSG_RESULT([$ENABLE_JAVAC_SERVER])
if test "x$ENABLE_JAVAC_SERVER" = xyes; then
JAVAC_USE_REMOTE=true
JAVAC_SERVERS="$OUTPUT_ROOT/javacservers"
else
JAVAC_USE_REMOTE=false
JAVAC_SERVERS=
fi
AC_SUBST(JAVAC_USE_REMOTE)
AC_SUBST(JAVAC_SERVERS)
AC_ARG_WITH(javac-server-cores, [AS_HELP_STRING([--with-javac-server-cores],
[use at most this number of concurrent threads on the javac server @<:@probed@:>@])])
if test "x$with_javac_server_cores" != x; then
JAVAC_SERVER_CORES="$with_javac_server_cores"
AC_ARG_WITH(sjavac-server-cores, [AS_HELP_STRING([--with-sjavac-server-cores],
[use at most this number of concurrent threads on the sjavac server @<:@probed@:>@])])
if test "x$with_sjavac_server_cores" != x; then
SJAVAC_SERVER_CORES="$with_sjavac_server_cores"
else
if test "$NUM_CORES" -gt 16; then
# We set this arbitrary limit because we want to limit the heap
@@ -287,86 +258,49 @@ else
# In the future we will make the javac compilers in the server
# share more and more state, thus enabling us to use more and
# more concurrent threads in the server.
JAVAC_SERVER_CORES="16"
SJAVAC_SERVER_CORES="16"
else
JAVAC_SERVER_CORES="$NUM_CORES"
SJAVAC_SERVER_CORES="$NUM_CORES"
fi
if test "$MEMORY_SIZE" -gt "17000"; then
MAX_HEAP_MEM=10000
ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn2G],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
elif test "$MEMORY_SIZE" -gt "10000"; then
MAX_HEAP_MEM=6000
ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn1G],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
elif test "$MEMORY_SIZE" -gt "5000"; then
MAX_HEAP_MEM=3000
ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
elif test "$MEMORY_SIZE" -gt "3800"; then
MAX_HEAP_MEM=2500
ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
elif test "$MEMORY_SIZE" -gt "1900"; then
MAX_HEAP_MEM=1200
ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1200M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1400M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
elif test "$MEMORY_SIZE" -gt "1000"; then
MAX_HEAP_MEM=900
ADD_JVM_ARG_IF_OK([-Xms400M -Xmx900M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn128M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms400M -Xmx1100M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
else
MAX_HEAP_MEM=512
ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xmn128M],SERVER_JAVA,[$SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
fi
ADD_JVM_ARG_IF_OK([-XX:PermSize=32m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-XX:MaxPermSize=160m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
MAX_COMPILERS_IN_HEAP=`expr $MAX_HEAP_MEM / 501`
if test "$JAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then
if test "$SJAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then
AC_MSG_CHECKING([if number of server cores must be reduced])
JAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP"
AC_MSG_RESULT([yes, to $JAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB])
SJAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP"
AC_MSG_RESULT([yes, to $SJAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB])
fi
fi
AC_SUBST(JAVAC_SERVER_CORES)
AC_MSG_CHECKING([whether to track dependencies between Java packages])
AC_ARG_ENABLE([javac-deps], [AS_HELP_STRING([--enable-javac-deps],
[enable the dependency tracking between Java packages @<:@disabled@:>@])],
[ENABLE_JAVAC_DEPS="${enableval}"], [ENABLE_JAVAC_DEPS='no'])
AC_MSG_RESULT([$ENABLE_JAVAC_DEPS])
if test "x$ENABLE_JAVAC_DEPS" = xyes; then
JAVAC_USE_DEPS=true
else
JAVAC_USE_DEPS=false
fi
AC_SUBST(JAVAC_USE_DEPS)
AC_MSG_CHECKING([whether to use multiple cores for javac compilation])
AC_ARG_ENABLE([javac-multi-core], [AS_HELP_STRING([--enable-javac-multi-core],
[compile Java packages concurrently @<:@disabled@:>@])],
[ENABLE_JAVAC_MULTICORE="${enableval}"], [ENABLE_JAVAC_MULTICORE='no'])
AC_MSG_RESULT([$ENABLE_JAVAC_MULTICORE])
if test "x$ENABLE_JAVAC_MULTICORE" = xyes; then
JAVAC_USE_MODE=MULTI_CORE_CONCURRENT
else
JAVAC_USE_MODE=SINGLE_THREADED_BATCH
if test "x$ENABLE_JAVAC_DEPS" = xyes; then
AC_MSG_WARN([Dependency tracking is not supported with single threaded batch compiles of Java source roots. Please add --disable-javac-deps to your configure options.])
AC_MSG_WARN([Disabling dependency tracking for you now.])
JAVAC_USE_DEPS=false
fi
if test "x$ENABLE_JAVAC_SERVER" = xyes; then
AC_MSG_WARN([The javac server will not be used since single threaded batch compiles are run within their own JVM. Please add --disable-javac-server to your configure options.])
AC_MSG_WARN([Disabling javac server for you now.])
JAVAC_USE_REMOTE=false
fi
fi
AC_SUBST(JAVAC_USE_MODE)
AC_SUBST(SJAVAC_SERVER_CORES)
AC_MSG_CHECKING([whether to use sjavac])
AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac],
@@ -375,4 +309,11 @@ AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac],
AC_MSG_RESULT([$ENABLE_SJAVAC])
AC_SUBST(ENABLE_SJAVAC)
if test "x$ENABLE_SJAVAC" = xyes; then
SJAVAC_SERVER_DIR="$OUTPUT_ROOT/javacservers"
else
SJAVAC_SERVER_DIR=
fi
AC_SUBST(SJAVAC_SERVER_DIR)
])

View File

@@ -31,7 +31,7 @@
# Translate a configuration triplet/quadruplet into something
# known by this configuration file.
# If no rewrite was found, then rewritten_target=${OPENJDK_TARGET_SYSTEM}
# If no rewrite was found, then rewritten_target=${OPENJDK_TARGET_AUTOCONF_NAME}
REWRITE_i686_pc_linux_gnu=i686-unknown-linux-gnu
REWRITE_i386_pc_solaris2_10=i686-sun-solaris2_10

View File

@@ -52,19 +52,19 @@ AC_DEFUN_ONCE([BDEPS_SCAN_FOR_BUILDDEPS],
fi
# Create build and target names that use _ instead of "-" and ".".
# This is necessary to use them in variable names.
build_var=`echo ${OPENJDK_BUILD_SYSTEM} | tr '-' '_' | tr '.' '_'`
target_var=`echo ${OPENJDK_TARGET_SYSTEM} | tr '-' '_' | tr '.' '_'`
build_var=`echo ${OPENJDK_BUILD_AUTOCONF_NAME} | tr '-' '_' | tr '.' '_'`
target_var=`echo ${OPENJDK_TARGET_AUTOCONF_NAME} | tr '-' '_' | tr '.' '_'`
# Extract rewrite information for build and target
eval rewritten_build=\${REWRITE_${build_var}}
if test "x$rewritten_build" = x; then
rewritten_build=${OPENJDK_BUILD_SYSTEM}
rewritten_build=${OPENJDK_BUILD_AUTOCONF_NAME}
echo Build stays the same $rewritten_build
else
echo Rewriting build for builddeps into $rewritten_build
fi
eval rewritten_target=\${REWRITE_${target_var}}
if test "x$rewritten_target" = x; then
rewritten_target=${OPENJDK_TARGET_SYSTEM}
rewritten_target=${OPENJDK_TARGET_AUTOCONF_NAME}
echo Target stays the same $rewritten_target
else
echo Rewriting target for builddeps into $rewritten_target

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,12 @@
CONFIGURE_COMMAND_LINE="$@"
conf_script_dir=`dirname $0`
conf_closed_script_dir="$conf_script_dir/../../jdk/make/closed/autoconf"
if [ "$CUSTOM_CONFIG_DIR" = "" ]; then
conf_custom_script_dir="$conf_script_dir/../../jdk/make/closed/autoconf"
else
conf_custom_script_dir=$CUSTOM_CONFIG_DIR
fi
###
### Test that the generated configure is up-to-date
@@ -14,8 +19,12 @@ TEST=`which test`
print_error_not_up_to_date() {
echo "Error: The configure source files is newer than the generated files."
echo "Please run 'sh autogen.sh' to update the generated files."
echo "Note that this test might trigger incorrectly sometimes due to hg timestamps".
}
# NOTE: This test can occasionally go wrong due to the way mercurial handles
# timestamps. It it supposed to aid during development of build-infra, but should
# go away before making this the default build system.
for file in configure.ac *.m4 ; do
if $TEST $file -nt generated-configure.sh; then
print_error_not_up_to_date
@@ -23,26 +32,32 @@ for file in configure.ac *.m4 ; do
fi
done
if $TEST -e $conf_closed_script_dir/generated-configure.sh; then
# If closed source configure is available, make sure it is up-to-date as well.
for file in configure.ac *.m4 $conf_closed_script_dir/*.m4; do
if $TEST $file -nt $conf_closed_script_dir/generated-configure.sh; then
if $TEST -e $conf_custom_script_dir/generated-configure.sh; then
# If custom source configure is available, make sure it is up-to-date as well.
for file in configure.ac *.m4 $conf_custom_script_dir/*.m4; do
if $TEST $file -nt $conf_custom_script_dir/generated-configure.sh; then
print_error_not_up_to_date
exit 1
fi
done
# Test if open configure is newer than closed configure, if so, closed needs to
# be regenerated.
# Test if open configure is newer than custom configure, if so, custom needs to
# be regenerated. This test is required to ensure consistency with custom source.
conf_open_configure_timestamp=`grep DATE_WHEN_GENERATED: $conf_script_dir/generated-configure.sh | cut -d" " -f 3`
conf_closed_configure_timestamp=`grep DATE_WHEN_GENERATED: $conf_closed_script_dir/generated-configure.sh | cut -d" " -f 3`
if $TEST $conf_open_configure_timestamp -gt $conf_closed_configure_timestamp; then
print_error_not_up_to_date
conf_custom_configure_timestamp=`grep DATE_WHEN_GENERATED: $conf_custom_script_dir/generated-configure.sh | cut -d" " -f 3`
if $TEST $conf_open_configure_timestamp -gt $conf_custom_configure_timestamp; then
echo "Error: The generated configure file contains changes not present in the custom generated file."
echo "Please run 'sh autogen.sh' to update the generated files."
exit 1
fi
fi
# Autoconf calls the configure script recursively sometimes.
# Don't start logging twice in that case
if $TEST "x$conf_debug_configure" = xtrue; then
conf_debug_configure=recursive
fi
###
### Process command-line arguments
###
@@ -63,6 +78,12 @@ do
--with-extra-cxxflags=*)
conf_extra_cxxflags=`expr "X$conf_option" : '[^=]*=\(.*\)'`
continue ;;
--debug-configure)
if $TEST "x$conf_debug_configure" != xrecursive; then
conf_debug_configure=true
export conf_debug_configure
fi
continue ;;
*)
conf_processed_arguments="$conf_processed_arguments $conf_option" ;;
esac
@@ -104,13 +125,29 @@ conf_processed_arguments="--enable-option-checking=fatal $conf_processed_argumen
###
### Call the configure script
###
if $TEST -e $conf_closed_script_dir/generated-configure.sh; then
# Closed source configure available; run that instead
. $conf_closed_script_dir/generated-configure.sh $conf_processed_arguments --with-extra-cflags="$conf_extra_cflags" --with-extra-cxxflags="$conf_extra_cxxflags"
if $TEST -e $conf_custom_script_dir/generated-configure.sh; then
# Custom source configure available; run that instead
echo Running custom generated-configure.sh
conf_script_to_run=$conf_custom_script_dir/generated-configure.sh
else
. $conf_script_dir/generated-configure.sh $conf_processed_arguments --with-extra-cflags="$conf_extra_cflags" --with-extra-cxxflags="$conf_extra_cxxflags"
echo Running generated-configure.sh
conf_script_to_run=$conf_script_dir/generated-configure.sh
fi
if $TEST "x$conf_debug_configure" != x; then
# Turn on shell debug output if requested (initial or recursive)
set -x
fi
if $TEST "x$conf_debug_configure" = xtrue; then
# Turn on logging, but don't turn on twice when called recursive
conf_debug_logfile=./debug-configure.log
(exec 3>&1 ; (. $conf_script_to_run $conf_processed_arguments --with-extra-cflags="$conf_extra_cflags" --with-extra-cxxflags="$conf_extra_cxxflags" 2>&1 1>&3 ) | tee -a $conf_debug_logfile 1>&2 ; exec 3>&-) | tee -a $conf_debug_logfile
else
. $conf_script_to_run $conf_processed_arguments --with-extra-cflags="$conf_extra_cflags" --with-extra-cxxflags="$conf_extra_cxxflags"
fi
conf_result_code=$?
###
### Post-processing
###
@@ -119,3 +156,5 @@ fi
if $TEST -d "$OUTPUT_ROOT"; then
mv -f config.log "$OUTPUT_ROOT" 2> /dev/null
fi
exit $conf_result_code

View File

@@ -53,9 +53,9 @@ m4_include([source-dirs.m4])
m4_include([toolchain.m4])
# This line needs to be here, verbatim, after all includes.
# It is replaced with closed functionality when building
# closed sources.
AC_DEFUN_ONCE([CLOSED_HOOK])
# It is replaced with custom functionality when building
# custom sources.
AC_DEFUN_ONCE([CUSTOM_HOOK])
###############################################################################
#
@@ -65,6 +65,12 @@ AC_DEFUN_ONCE([CLOSED_HOOK])
# Basic initialization that must happen first of all
BASIC_INIT
# Now we can determine OpenJDK build and target platforms. This is required to
# have early on.
PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET
# Continue setting up basic stuff.
BASIC_SETUP_PATHS
BASIC_SETUP_LOGGING
@@ -75,28 +81,18 @@ HELP_SETUP_DEPENDENCY_HELP
# Without these, we can't properly run the rest of the configure script.
BASIC_SETUP_TOOLS
# Check if pkg-config is available.
PKG_PROG_PKG_CONFIG
# After basic tools have been setup, we can check build os specific details.
PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION
# Setup builddeps, for automatic downloading of tools we need.
# This is needed before we can call BDEPS_CHECK_MODULE, which is done in
# boot-jdk setup, but we need to have basic tools setup first.
BDEPS_CONFIGURE_BUILDDEPS
BDEPS_SCAN_FOR_BUILDDEPS
# Check if pkg-config is available.
PKG_PROG_PKG_CONFIG
###############################################################################
#
# Determine OpenJDK build and target platforms.
#
###############################################################################
PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET
PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION
# With knowledge of the build platform, setup more basic things.
BASIC_SETUP_PATH_SEP
BASIC_SETUP_SEARCHPATH
###############################################################################
#
# Determine OpenJDK variants, options and version numbers.
@@ -148,7 +144,7 @@ TOOLCHAIN_SETUP_PATHS
# FIXME: Currently we must test this after paths but before flags. Fix!
# And we can test some aspects on the target using configure macros.
PLATFORM_TEST_OPENJDK_TARGET_BITS
PLATFORM_SETUP_OPENJDK_TARGET_BITS
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
# Configure flags for the tools
@@ -213,8 +209,8 @@ BPERF_SETUP_CCACHE
# Check for some common pitfalls
BASIC_TEST_USABILITY_ISSUES
# At the end, call the closed hook. (Dummy macro if no closed sources available)
CLOSED_HOOK
# At the end, call the custom hook. (Dummy macro if no custom sources available)
CUSTOM_HOOK
# We're messing a bit with internal autoconf variables to put the config.status
# in the output directory instead of the current directory.
@@ -222,5 +218,8 @@ CONFIG_STATUS="$OUTPUT_ROOT/config.status"
# Create the actual output files. Now the main work of configure is done.
AC_OUTPUT
# Make the compare script executable
$CHMOD +x $OUTPUT_ROOT/compare.sh
# Finally output some useful information to the user
HELP_PRINT_SUMMARY_AND_WARNINGS

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
#
# Copyright (c) 2011, 2012, 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.
#
# Chaining of spec files
HOTSPOT_SPEC:=$(dir $(SPEC))hotspot-spec.gmk
override SPEC=$(HOTSPOT_SPEC)
# Now include the base spec.gmk file
include $(BASE_SPEC)
# Additional legacy variables defined for Hotspot
@SET_OPENJDK@
# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
@BUILD_HEADLESS@
# Legacy setting: OPT or DBG
VARIANT:=@VARIANT@
# Legacy setting: true or false
FASTDEBUG:=@FASTDEBUG@
# Legacy setting: debugging the class files?
DEBUG_CLASSFILES:=@DEBUG_CLASSFILES@
ALT_CUPS_HEADERS_PATH:=$(patsubst -I%,%,$(filter -I%,@CUPS_CFLAGS@))
# The HOSTCC/HOSTCXX is Hotspot terminology for the BUILD_CC/BUILD_CXX, i.e. the
# compiler that produces code that can be run on the build platform.
HOSTCC:=@UNCYGDRIVE@ @BUILD_CC@
HOSTCXX:=@UNCYGDRIVE@ @BUILD_CXX@
####################################################
#
# Legacy Hotspot support
# If cross compiling, then define CROSS_COMPILE_ARCH:=cpu_name here.
@DEFINE_CROSS_COMPILE_ARCH@
# Old name for OPENJDK_TARGET_OS (aix,bsd,hpux,linux,macosx,solaris,windows etc)
PLATFORM=$(OPENJDK_TARGET_OS)
# 32 or 64 bit
ARCH_DATA_MODEL=$(OPENJDK_TARGET_CPU_BITS)
ALT_BOOTDIR=$(BOOT_JDK)
# Can be /sparcv9 or /amd64 on Solaris
ISA_DIR=$(OPENJDK_TARGET_CPU_ISADIR)
# Yet another name for arch used for an extra subdir below the jvm lib.
# Uses i386 and amd64, instead of x86 and x86_64.
LIBARCH=$(OPENJDK_TARGET_CPU_LEGACY_LIB)
# Old name for OPENJDK_TARGET_CPU, uses i586 and amd64, instead of x86 and x86_64.
ARCH=$(OPENJDK_TARGET_CPU_LEGACY)
# Legacy setting for building for a 64 bit machine.
# If yes then this expands to _LP64:=1
@LP64@
ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
ALT_EXPORT_PATH=$(HOTSPOT_DIST)
HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@
# This is used from the libjvm build for C/C++ code.
HOTSPOT_BUILD_JOBS:=@CONCURRENT_BUILD_JOBS@
# Control wether Hotspot runs Queens test after building
TEST_IN_BUILD=@TEST_IN_BUILD@
EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@
EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@

View File

@@ -30,7 +30,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_VARIANT],
# Check which variant of the JDK that we want to build.
# Currently we have:
# normal: standard edition
# embedded: cut down to a smaller footprint
# but the custom make system may add other variants
#
# Effectively the JDK variant gives a name to a specific set of
# modules to compile into the JDK. In the future, these modules
@@ -38,22 +38,14 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_VARIANT],
#
AC_MSG_CHECKING([which variant of the JDK to build])
AC_ARG_WITH([jdk-variant], [AS_HELP_STRING([--with-jdk-variant],
[JDK variant to build (normal, embedded) @<:@normal@:>@])])
[JDK variant to build (normal) @<:@normal@:>@])])
if test "x$with_jdk_variant" = xnormal || test "x$with_jdk_variant" = x; then
JAVASE_EMBEDDED=""
MINIMIZE_RAM_USAGE=""
JDK_VARIANT="normal"
elif test "x$with_jdk_variant" = xembedded; then
JAVASE_EMBEDDED="JAVASE_EMBEDDED:=true"
MINIMIZE_RAM_USAGE="MINIMIZE_RAM_USAGE:=true"
JDK_VARIANT="embedded"
else
AC_MSG_ERROR([The available JDK variants are: normal, embedded])
AC_MSG_ERROR([The available JDK variants are: normal])
fi
AC_SUBST(JAVASE_EMBEDDED)
AC_SUBST(MINIMIZE_RAM_USAGE)
AC_SUBST(JDK_VARIANT)
AC_MSG_RESULT([$JDK_VARIANT])
@@ -77,11 +69,7 @@ AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants],
[JVM variants (separated by commas) to build (server, client, kernel, zero, zeroshark) @<:@server@:>@])])
if test "x$with_jvm_variants" = x; then
if test "x$JDK_VARIANT" = xembedded; then
with_jvm_variants="client"
else
with_jvm_variants="server"
fi
with_jvm_variants="server"
fi
JVM_VARIANTS=",$with_jvm_variants,"
@@ -125,6 +113,11 @@ AC_SUBST(JVM_VARIANT_KERNEL)
AC_SUBST(JVM_VARIANT_ZERO)
AC_SUBST(JVM_VARIANT_ZEROSHARK)
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
MACOSX_UNIVERSAL="true"
fi
AC_SUBST(MACOSX_UNIVERSAL)
])
@@ -223,6 +216,14 @@ fi
HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT"
# On Macosx universal binaries are produced, but they only contain
# 64 bit intel. This invalidates control of which jvms are built
# from configure, but only server is valid anyway. Fix this
# when hotspot makefiles are rewritten.
if test "x$MACOSX_UNIVERSAL" = xtrue; then
HOTSPOT_TARGET=universal_product
fi
#####
AC_SUBST(DEBUG_LEVEL)
@@ -289,14 +290,12 @@ BUILD_HEADLESS="BUILD_HEADLESS:=true"
if test "x$SUPPORT_HEADFUL" = xyes; then
# We are building both headful and headless.
BUILD_HEADLESS_ONLY=""
headful_msg="inlude support for both headful and headless"
fi
if test "x$SUPPORT_HEADFUL" = xno; then
# Thus we are building headless only.
BUILD_HEADLESS="BUILD_HEADLESS:=true"
BUILD_HEADLESS_ONLY="BUILD_HEADLESS_ONLY:=true"
headful_msg="headless only"
fi
@@ -305,23 +304,6 @@ AC_MSG_RESULT([$headful_msg])
AC_SUBST(SUPPORT_HEADLESS)
AC_SUBST(SUPPORT_HEADFUL)
AC_SUBST(BUILD_HEADLESS)
AC_SUBST(BUILD_HEADLESS_ONLY)
###############################################################################
#
# Should we run the painfully slow javadoc tool?
#
AC_MSG_CHECKING([whether to build documentation])
AC_ARG_ENABLE([docs], [AS_HELP_STRING([--enable-docs],
[enable generation of Javadoc documentation @<:@disabled@:>@])],
[ENABLE_DOCS="${enableval}"], [ENABLE_DOCS='no'])
AC_MSG_RESULT([$ENABLE_DOCS])
AC_SUBST(ENABLE_DOCS)
GENERATE_DOCS=false
if test "x$ENABLE_DOCS" = xyes; then
GENERATE_DOCS=true
fi
AC_SUBST(GENERATE_DOCS)
###############################################################################
#
@@ -373,25 +355,21 @@ AC_SUBST(CACERTS_FILE)
#
COMPRESS_JARS=false
# default for embedded is yes...
if test "x$JDK_VARIANT" = "xembedded"; then
COMPRESS_JARS=true
fi
AC_SUBST(COMPRESS_JARS)
###############################################################################
#
# Should we compile JFR
# default no, except for on closed-jdk and !embedded
# default no, except for on closed-jdk
#
ENABLE_JFR=no
# Is the JFR source present
#
# For closed && !embedded default is yes if the source is present
# For closed default is yes
#
if test "x${OPENJDK}" != "xtrue" && test "x$JDK_VARIANT" != "xembedded" && test -d "$SRC_ROOT/jdk/src/closed/share/native/oracle/jfr"; then
if test "x${OPENJDK}" != "xtrue"; then
ENABLE_JFR=yes
fi
@@ -469,7 +447,7 @@ AC_SUBST(COOKED_BUILD_NUMBER)
AC_DEFUN_ONCE([JDKOPT_SETUP_BUILD_TWEAKS],
[
HOTSPOT_MAKE_ARGS="ALT_OUTPUTDIR=$HOTSPOT_OUTPUTDIR ALT_EXPORT_PATH=$HOTSPOT_DIST $HOTSPOT_TARGET"
HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET"
AC_SUBST(HOTSPOT_MAKE_ARGS)
# The name of the Service Agent jar.
@@ -494,11 +472,6 @@ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
ENABLE_DEBUG_SYMBOLS=no
fi
# default for embedded is no...
if test "x$JDK_VARIANT" = "xembedded"; then
ENABLE_DEBUG_SYMBOLS=no
fi
AC_ARG_ENABLE([debug-symbols],
[AS_HELP_STRING([--disable-debug-symbols],[disable generation of debug symbols (@<:@enabled@:>@)])],
[ENABLE_DEBUG_SYMBOLS=${enable_debug_symbols}],
@@ -549,3 +522,11 @@ AC_SUBST(ZIP_DEBUGINFO_FILES)
AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
])
# Support for customization of the build process. Some build files
# will include counterparts from this location, if they exist. This allows
# for a degree of customization of the build targets and the rules/recipes
# to create them
AC_ARG_WITH([custom-make-dir], [AS_HELP_STRING([--with-custom-make-dir],
[directory containing custom build/make files])], [CUSTOM_MAKE_DIR=$with_custom_make_dir])
AC_SUBST(CUSTOM_MAKE_DIR)

View File

@@ -73,6 +73,10 @@ if test "x$OPENJDK" = "xfalse"; then
FREETYPE2_NOT_NEEDED=yes
fi
if test "x$SUPPORT_HEADFUL" = xno; then
X11_NOT_NEEDED=yes
fi
###############################################################################
#
# Check for MacOSX support for OpenJDK. If this exists, try to build a JVM
@@ -518,9 +522,7 @@ AC_SUBST(USE_EXTERNAL_LIBZ)
###############################################################################
LIBZIP_CAN_USE_MMAP=true
if test "x$JDK_VARIANT" = "xembedded"; then
LIBZIP_CAN_USE_MMAP=false
fi
AC_SUBST(LIBZIP_CAN_USE_MMAP)
###############################################################################
@@ -629,7 +631,7 @@ fi
# libCrun is the c++ runtime-library with SunStudio (roughly the equivalent of gcc's libstdc++.so)
if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$LIBCXX" = x; then
LIBCXX="/usr/lib${LEGACY_OPENJDK_TARGET_CPU3}/libCrun.so.1"
LIBCXX="/usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libCrun.so.1"
fi
# TODO better (platform agnostic) test

View File

@@ -23,279 +23,86 @@
# questions.
#
AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD_AND_LEGACY_VARS],
[
# Expects $host_os $host_cpu $build_os and $build_cpu
# and $with_target_bits to have been setup!
#
# Translate the standard triplet(quadruplet) definition
# of the target/build system into
# OPENJDK_TARGET_OS=aix,bsd,hpux,linux,macosx,solaris,windows
# OPENJDK_TARGET_OS_FAMILY=bsd,gnu,sysv,win32,wince
# OPENJDK_TARGET_OS_API=posix,winapi
#
# OPENJDK_TARGET_CPU=ia32,x64,sparc,sparcv9,arm,arm64,ppc,ppc64
# OPENJDK_TARGET_CPU_ARCH=x86,sparc,pcc,arm
# OPENJDK_TARGET_CPU_BITS=32,64
# OPENJDK_TARGET_CPU_ENDIAN=big,little
#
# The same values are setup for BUILD_...
#
# And the legacy variables, for controlling the old makefiles.
# LEGACY_OPENJDK_TARGET_CPU1=i586,amd64/x86_64,sparc,sparcv9,arm,arm64...
# LEGACY_OPENJDK_TARGET_CPU2=i386,amd64,sparc,sparcv9,arm,arm64...
# LEGACY_OPENJDK_TARGET_CPU3=sparcv9,amd64 (but only on solaris)
# LEGACY_OPENJDK_TARGET_OS_API=solaris,windows
#
# We also copy the autoconf trip/quadruplet
# verbatim to OPENJDK_TARGET_SYSTEM (from the autoconf "host") and OPENJDK_BUILD_SYSTEM
OPENJDK_TARGET_SYSTEM="$host"
OPENJDK_BUILD_SYSTEM="$build"
AC_SUBST(OPENJDK_TARGET_SYSTEM)
AC_SUBST(OPENJDK_BUILD_SYSTEM)
PLATFORM_EXTRACT_VARS_FROM_OS_TO(OPENJDK_TARGET,$host_os)
PLATFORM_EXTRACT_VARS_FROM_CPU_TO(OPENJDK_TARGET,$host_cpu)
PLATFORM_EXTRACT_VARS_FROM_OS_TO(OPENJDK_BUILD,$build_os)
PLATFORM_EXTRACT_VARS_FROM_CPU_TO(OPENJDK_BUILD,$build_cpu)
if test "x$OPENJDK_TARGET_OS" != xsolaris; then
LEGACY_OPENJDK_TARGET_CPU3=""
LEGACY_OPENJDK_BUILD_CPU3=""
fi
# On MacOSX and MacOSX only, we have a different name for the x64 CPU in ARCH (LEGACY_OPENJDK_TARGET_CPU1) ...
if test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$OPENJDK_TARGET_CPU" = xx64; then
LEGACY_OPENJDK_TARGET_CPU1="x86_64"
fi
PLATFORM_SET_RELEASE_FILE_OS_VALUES
])
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS_TO],
[
PLATFORM_EXTRACT_VARS_FROM_OS($2)
$1_OS="$VAR_OS"
$1_OS_FAMILY="$VAR_OS_FAMILY"
$1_OS_API="$VAR_OS_API"
AC_SUBST($1_OS)
AC_SUBST($1_OS_FAMILY)
AC_SUBST($1_OS_API)
if test "x$$1_OS_API" = xposix; then
LEGACY_$1_OS_API="solaris"
fi
if test "x$$1_OS_API" = xwinapi; then
LEGACY_$1_OS_API="windows"
fi
AC_SUBST(LEGACY_$1_OS_API)
])
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU_TO],
[
PLATFORM_EXTRACT_VARS_FROM_CPU($2)
$1_CPU="$VAR_CPU"
$1_CPU_ARCH="$VAR_CPU_ARCH"
$1_CPU_BITS="$VAR_CPU_BITS"
$1_CPU_ENDIAN="$VAR_CPU_ENDIAN"
AC_SUBST($1_CPU)
AC_SUBST($1_CPU_ARCH)
AC_SUBST($1_CPU_BITS)
AC_SUBST($1_CPU_ENDIAN)
# Also store the legacy naming of the cpu.
# Ie i586 and amd64 instead of ia32 and x64
LEGACY_$1_CPU1="$VAR_LEGACY_CPU"
AC_SUBST(LEGACY_$1_CPU1)
# And the second legacy naming of the cpu.
# Ie i386 and amd64 instead of ia32 and x64.
LEGACY_$1_CPU2="$LEGACY_$1_CPU1"
if test "x$LEGACY_$1_CPU1" = xi586; then
LEGACY_$1_CPU2=i386
fi
AC_SUBST(LEGACY_$1_CPU2)
# And the third legacy naming of the cpu.
# Ie only amd64 or sparcv9, used for the ISA_DIR on Solaris.
LEGACY_$1_CPU3=""
if test "x$$1_CPU" = xx64; then
LEGACY_$1_CPU3=amd64
fi
if test "x$$1_CPU" = xsparcv9; then
LEGACY_$1_CPU3=sparcv9
fi
AC_SUBST(LEGACY_$1_CPU3)
])
# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
# Converts autoconf style CPU name to OpenJDK style, into
# VAR_CPU, VAR_CPU_ARCH, VAR_CPU_BITS and VAR_CPU_ENDIAN.
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
[
# First argument is the cpu name from the trip/quad
case "$1" in
x86_64)
VAR_CPU=x64
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
VAR_LEGACY_CPU=amd64
;;
i?86)
VAR_CPU=ia32
VAR_CPU=x86
VAR_CPU_ARCH=x86
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
VAR_LEGACY_CPU=i586
;;
alpha*)
VAR_CPU=alpha
VAR_CPU_ARCH=alpha
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
VAR_LEGACY_CPU=alpha
;;
arm*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
VAR_LEGACY_CPU=arm
;;
mips)
VAR_CPU=mips
VAR_CPU_ARCH=mips
VAR_CPU_BITS=woot
VAR_CPU_ENDIAN=woot
VAR_LEGACY_CPU=mips
;;
mipsel)
VAR_CPU=mipsel
VAR_CPU_ARCH=mips
VAR_CPU_BITS=woot
VAR_CPU_ENDIAN=woot
VAR_LEGACY_CPU=mipsel
;;
powerpc)
VAR_CPU=ppc
VAR_CPU_ARCH=ppc
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
VAR_LEGACY_CPU=ppc
;;
powerpc64)
VAR_CPU=ppc64
VAR_CPU_ARCH=ppc
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
VAR_LEGACY_CPU=ppc64
;;
sparc)
VAR_CPU=sparc
VAR_CPU_ARCH=sparc
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
VAR_LEGACY_CPU=sparc
;;
sparc64)
sparcv9)
VAR_CPU=sparcv9
VAR_CPU_ARCH=sparc
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
VAR_LEGACY_CPU=sparcv9
;;
s390)
VAR_CPU=s390
VAR_CPU_ARCH=s390
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=woot
VAR_LEGACY_CPU=s390
VAR_LEGACY_CPU=s390
;;
s390x)
VAR_CPU=s390x
VAR_CPU_ARCH=s390
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=woot
VAR_LEGACY_CPU=s390x
;;
*)
AC_MSG_ERROR([unsupported cpu $1])
;;
esac
# Workaround cygwin not knowing about 64 bit.
if test "x$VAR_OS" = "xwindows"; then
if test "x$PROCESSOR_IDENTIFIER" != "x"; then
PROC_ARCH=`echo $PROCESSOR_IDENTIFIER | $CUT -f1 -d' '`
case "$PROC_ARCH" in
intel64|Intel64|INTEL64|em64t|EM64T|amd64|AMD64|8664|x86_64)
VAR_CPU=x64
VAR_CPU_BITS=64
VAR_LEGACY_CPU=amd64
;;
esac
fi
fi
# on solaris x86...default seems to be 32-bit
if test "x$VAR_OS" = "xsolaris" && \
test "x$with_target_bits" = "x" && \
test "x$VAR_CPU_ARCH" = "xx86"
then
with_target_bits=32
fi
if test "x$VAR_CPU_ARCH" = "xx86"; then
if test "x$with_target_bits" = "x64"; then
VAR_CPU=x64
VAR_CPU_BITS=64
VAR_LEGACY_CPU=amd64
fi
if test "x$with_target_bits" = "x32"; then
VAR_CPU=ia32
VAR_CPU_BITS=32
VAR_LEGACY_CPU=i586
fi
fi
if test "x$VAR_CPU_ARCH" = "xsparc"; then
if test "x$with_target_bits" = "x64"; then
VAR_CPU=sparcv9
VAR_CPU_BITS=64
VAR_LEGACY_CPU=sparcv9
fi
fi
])
# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
# Converts autoconf style OS name to OpenJDK style, into
# VAR_OS and VAR_OS_API.
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
[
case "$1" in
*linux*)
VAR_OS=linux
VAR_OS_API=posix
VAR_OS_FAMILY=gnu
;;
*solaris*)
VAR_OS=solaris
VAR_OS_API=posix
VAR_OS_FAMILY=sysv
;;
*darwin*)
VAR_OS=macosx
VAR_OS_API=posix
VAR_OS_FAMILY=bsd
;;
*bsd*)
VAR_OS=bsd
VAR_OS_API=posix
VAR_OS_FAMILY=bsd
;;
*cygwin*|*windows*)
VAR_OS=windows
VAR_OS_API=winapi
VAR_OS_FAMILY=windows
;;
*)
AC_MSG_ERROR([unsupported operating system $1])
@@ -303,6 +110,208 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
esac
])
# Expects $host_os $host_cpu $build_os and $build_cpu
# and $with_target_bits to have been setup!
#
# Translate the standard triplet(quadruplet) definition
# of the target/build system into OPENJDK_TARGET_OS, OPENJDK_TARGET_CPU,
# OPENJDK_BUILD_OS, etc.
AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
[
# Copy the autoconf trip/quadruplet verbatim to OPENJDK_TARGET_AUTOCONF_NAME
# (from the autoconf "host") and OPENJDK_BUILD_AUTOCONF_NAME
# Note that we might later on rewrite e.g. OPENJDK_TARGET_CPU due to reduced build,
# but this will not change the value of OPENJDK_TARGET_AUTOCONF_NAME.
OPENJDK_TARGET_AUTOCONF_NAME="$host"
OPENJDK_BUILD_AUTOCONF_NAME="$build"
AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME)
AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
# 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_CPU($host_cpu)
# ... and setup our own variables. (Do this explicitely to facilitate searching)
OPENJDK_TARGET_OS="$VAR_OS"
OPENJDK_TARGET_OS_API="$VAR_OS_API"
OPENJDK_TARGET_CPU="$VAR_CPU"
OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
AC_SUBST(OPENJDK_TARGET_OS)
AC_SUBST(OPENJDK_TARGET_OS_API)
AC_SUBST(OPENJDK_TARGET_CPU)
AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
AC_SUBST(OPENJDK_TARGET_CPU_BITS)
AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
# 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_CPU($build_cpu)
# ..and setup our own variables. (Do this explicitely to facilitate searching)
OPENJDK_BUILD_OS="$VAR_OS"
OPENJDK_BUILD_OS_API="$VAR_OS_API"
OPENJDK_BUILD_CPU="$VAR_CPU"
OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
AC_SUBST(OPENJDK_BUILD_OS)
AC_SUBST(OPENJDK_BUILD_OS_API)
AC_SUBST(OPENJDK_BUILD_CPU)
AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
AC_SUBST(OPENJDK_BUILD_CPU_BITS)
AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
])
# Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
# accordingly. Must be done after setting up build and target system, but before
# doing anything else with these values.
AC_DEFUN([PLATFORM_SETUP_TARGET_CPU_BITS],
[
AC_ARG_WITH(target-bits, [AS_HELP_STRING([--with-target-bits],
[build 32-bit or 64-bit binaries (for platforms that support it), e.g. --with-target-bits=32 @<:@guessed@:>@])])
# We have three types of compiles:
# native == normal compilation, target system == build system
# cross == traditional cross compilation, target system != build system; special toolchain needed
# reduced == using native compilers, but with special flags (e.g. -m32) to produce 32-bit builds on 64-bit machines
#
if test "x$OPENJDK_BUILD_AUTOCONF_NAME" != "x$OPENJDK_TARGET_AUTOCONF_NAME"; then
# We're doing a proper cross-compilation
COMPILE_TYPE="cross"
else
COMPILE_TYPE="native"
fi
if test "x$with_target_bits" != x; then
if test "x$COMPILE_TYPE" = "xcross"; then
AC_MSG_ERROR([It is not possible to combine --with-target-bits=X and proper cross-compilation. Choose either.])
fi
if test "x$with_target_bits" = x32 && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
# A reduced build is requested
COMPILE_TYPE="reduced"
OPENJDK_TARGET_CPU_BITS=32
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
OPENJDK_TARGET_CPU=x86
elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
OPENJDK_TARGET_CPU=sparc
else
AC_MSG_ERROR([Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9])
fi
elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
AC_MSG_ERROR([It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead.])
elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then
AC_MSG_NOTICE([--with-target-bits are set to build platform address size; argument has no meaning])
else
AC_MSG_ERROR([--with-target-bits can only be 32 or 64, you specified $with_target_bits!])
fi
fi
AC_SUBST(COMPILE_TYPE)
AC_MSG_CHECKING([for compilation type])
AC_MSG_RESULT([$COMPILE_TYPE])
])
# Setup the legacy variables, for controlling the old makefiles.
#
AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
[
# Also store the legacy naming of the cpu.
# Ie i586 and amd64 instead of x86 and x86_64
OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
if test "x$OPENJDK_TARGET_CPU" = xx86; then
OPENJDK_TARGET_CPU_LEGACY="i586"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except MacOSX replace x86_64 with amd64.
OPENJDK_TARGET_CPU_LEGACY="amd64"
fi
AC_SUBST(OPENJDK_TARGET_CPU_LEGACY)
# And the second legacy naming of the cpu.
# Ie i386 and amd64 instead of x86 and x86_64.
OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU"
if test "x$OPENJDK_TARGET_CPU" = xx86; then
OPENJDK_TARGET_CPU_LEGACY_LIB="i386"
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
OPENJDK_TARGET_CPU_LEGACY_LIB="amd64"
fi
AC_SUBST(OPENJDK_TARGET_CPU_LEGACY_LIB)
# This is the name of the cpu (but using i386 and amd64 instead of
# x86 and x86_64, respectively), preceeded by a /, to be used when
# locating libraries. On macosx, it's empty, though.
OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB"
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
OPENJDK_TARGET_CPU_LIBDIR=""
fi
AC_SUBST(OPENJDK_TARGET_CPU_LIBDIR)
# OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
# /amd64 or /sparcv9. This string is appended to some library paths, like this:
# /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
OPENJDK_TARGET_CPU_ISADIR=""
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
OPENJDK_TARGET_CPU_ISADIR="/amd64"
elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
OPENJDK_TARGET_CPU_ISADIR="/sparcv9"
fi
fi
AC_SUBST(OPENJDK_TARGET_CPU_ISADIR)
# Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
# On linux only, we replace x86 with i386.
OPENJDK_TARGET_CPU_OSARCH="i386"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
OPENJDK_TARGET_CPU_OSARCH="amd64"
fi
AC_SUBST(OPENJDK_TARGET_CPU_OSARCH)
OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU"
if test "x$OPENJDK_TARGET_CPU" = xx86; then
OPENJDK_TARGET_CPU_JLI="i386"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
OPENJDK_TARGET_CPU_JLI="amd64"
fi
# Now setup the -D flags for building libjli.
OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then
OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
fi
fi
AC_SUBST(OPENJDK_TARGET_CPU_JLI_CFLAGS)
# Setup OPENJDK_TARGET_OS_API_DIR, used in source paths.
if test "x$OPENJDK_TARGET_OS_API" = xposix; then
OPENJDK_TARGET_OS_API_DIR="solaris"
fi
if test "x$OPENJDK_TARGET_OS_API" = xwinapi; then
OPENJDK_TARGET_OS_API_DIR="windows"
fi
AC_SUBST(OPENJDK_TARGET_OS_API_DIR)
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
A_LP64="LP64:="
ADD_LP64="-D_LP64=1"
fi
AC_SUBST(LP64,$A_LP64)
if test "x$COMPILE_TYPE" = "xcross"; then
# FIXME: ... or should this include reduced builds..?
DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
else
DEFINE_CROSS_COMPILE_ARCH=""
fi
AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
])
AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
[
if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
@@ -315,7 +324,11 @@ AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
fi
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
REQUIRED_OS_NAME=Windows
REQUIRED_OS_VERSION=5.1
if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
REQUIRED_OS_VERSION=5.2
else
REQUIRED_OS_VERSION=5.1
fi
fi
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
REQUIRED_OS_NAME=Darwin
@@ -338,42 +351,10 @@ AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
AC_ARG_WITH(target-bits, [AS_HELP_STRING([--with-target-bits],
[build 32-bit or 64-bit binaries (for platforms that support it), e.g. --with-target-bits=32 @<:@guessed@:>@])])
if test "x$with_target_bits" != x && \
test "x$with_target_bits" != x32 && \
test "x$with_target_bits" != x64 ; then
AC_MSG_ERROR([--with-target-bits can only be 32 or 64, you specified $with_target_bits!])
fi
# Translate the standard cpu-vendor-kernel-os quadruplets into
# the new TARGET_.... and BUILD_... and the legacy names used by
# the openjdk build.
# It uses $host_os $host_cpu $build_os $build_cpu and $with_target_bits
PLATFORM_EXTRACT_TARGET_AND_BUILD_AND_LEGACY_VARS
# The LEGACY_OPENJDK_TARGET_CPU3 is the setting for ISA_DIR.
if test "x$LEGACY_OPENJDK_TARGET_CPU3" != x; then
LEGACY_OPENJDK_TARGET_CPU3="/${LEGACY_OPENJDK_TARGET_CPU3}"
fi
# Now the following vars are defined.
# OPENJDK_TARGET_OS=aix,bsd,hpux,linux,macosx,solaris,windows
# OPENJDK_TARGET_OS_FAMILY=bsd,gnu,sysv,win32,wince
# OPENJDK_TARGET_OS_API=posix,winapi
#
# OPENJDK_TARGET_CPU=ia32,x64,sparc,sparcv9,arm,arm64,ppc,ppc64
# OPENJDK_TARGET_CPU_ARCH=x86,sparc,pcc,arm
# OPENJDK_TARGET_CPU_BITS=32,64
# OPENJDK_TARGET_CPU_ENDIAN=big,little
#
# There is also a:
# LEGACY_OPENJDK_TARGET_CPU1=i586,amd64,.... # used to set the old var ARCH
# LEGACY_OPENJDK_TARGET_CPU2=i386,amd64,.... # used to set the old var LIBARCH
# LEGACY_OPENJDK_TARGET_CPU3=only sparcv9,amd64 # used to set the ISA_DIR on Solaris
# There was also a BUILDARCH that had i486,amd64,... but we do not use that
# in the new build.
# LEGACY_OPENJDK_TARGET_OS_API=solaris,windows # used to select source roots
PLATFORM_EXTRACT_TARGET_AND_BUILD
PLATFORM_SETUP_TARGET_CPU_BITS
PLATFORM_SET_RELEASE_FILE_OS_VALUES
PLATFORM_SETUP_LEGACY_VARS
])
AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],
@@ -391,7 +372,26 @@ AC_SUBST(OS_VERSION_MINOR)
AC_SUBST(OS_VERSION_MICRO)
])
AC_DEFUN_ONCE([PLATFORM_TEST_OPENJDK_TARGET_BITS],
# Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS.
# Add -mX to various FLAGS variables.
AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS],
[
# keep track of c/cxx flags that we added outselves...
# to prevent emitting warning...
ADDED_CFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
ADDED_CXXFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
ADDED_LDFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
CFLAGS="${CFLAGS}${ADDED_CFLAGS}"
CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}"
LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}"
CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}"
CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
])
AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
[
###############################################################################
#
@@ -399,72 +399,47 @@ AC_DEFUN_ONCE([PLATFORM_TEST_OPENJDK_TARGET_BITS],
# (The JVM can use 32 or 64 bit Java pointers but that decision
# is made at runtime.)
#
AC_LANG_PUSH(C++)
OLD_CXXFLAGS="$CXXFLAGS"
if test "x$OPENJDK_TARGET_OS" != xwindows && test "x$with_target_bits" != x; then
CXXFLAGS="-m${with_target_bits} $CXXFLAGS"
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
# Always specify -m flags on Solaris
PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
elif test "x$COMPILE_TYPE" = xreduced; then
if test "x$OPENJDK_TARGET_OS" != xwindows; then
# Specify -m if running reduced on other Posix platforms
PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
fi
fi
# Make compilation sanity check
AC_CHECK_HEADERS([stdio.h], , [
AC_MSG_NOTICE([Failed to compile stdio.h. This likely implies missing compile dependencies.])
if test "x$COMPILE_TYPE" = xreduced; then
AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed.])
elif test "x$COMPILE_TYPE" = xcross; then
AC_MSG_NOTICE([You are doing a cross-compilation. Check that you have all target platform libraries installed.])
fi
AC_MSG_ERROR([Cannot continue.])
])
AC_CHECK_SIZEOF([int *], [1111])
CXXFLAGS="$OLD_CXXFLAGS"
AC_LANG_POP(C++)
# keep track of c/cxx flags that we added outselves...
# to prevent emitting warning...
ADDED_CFLAGS=
ADDED_CXXFLAGS=
ADDED_LDFLAGS=
if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then
# Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html
SIZEOF_INT_P="$ac_cv_sizeof_int_p"
fi
if test "x$ac_cv_sizeof_int_p" = x0; then
# The test failed, lets pick the assumed value.
ARCH_DATA_MODEL=$OPENJDK_TARGET_CPU_BITS
if test "x$SIZEOF_INT_P" = x; then
# The test failed, lets stick to the assumed value.
AC_MSG_WARN([The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS.])
else
ARCH_DATA_MODEL=`expr 8 \* $ac_cv_sizeof_int_p`
TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P`
if test "x$OPENJDK_TARGET_OS" != xwindows && test "x$with_target_bits" != x; then
ADDED_CFLAGS=" -m${with_target_bits}"
ADDED_CXXFLAGS=" -m${with_target_bits}"
ADDED_LDFLAGS=" -m${with_target_bits}"
CFLAGS="${CFLAGS}${ADDED_CFLAGS}"
CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}"
LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}"
CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}"
CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)])
fi
fi
if test "x$ARCH_DATA_MODEL" = x64; then
A_LP64="LP64:="
ADD_LP64="-D_LP64=1"
fi
AC_MSG_CHECKING([for target address size])
AC_MSG_RESULT([$ARCH_DATA_MODEL bits])
AC_SUBST(LP64,$A_LP64)
AC_SUBST(ARCH_DATA_MODEL)
if test "x$ARCH_DATA_MODEL" != "x$OPENJDK_TARGET_CPU_BITS"; then
AC_MSG_ERROR([The tested number of bits in the target ($ARCH_DATA_MODEL) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)])
fi
#
# NOTE: check for -mstackrealign needs to be below potential addition of -m32
#
if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
# On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
# While waiting for a better solution, the current workaround is to use -mstackrealign.
CFLAGS="$CFLAGS -mstackrealign"
AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
[
AC_MSG_RESULT([yes])
],
[
AC_MSG_RESULT([no])
AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
])
fi
AC_MSG_RESULT([$OPENJDK_TARGET_CPU_BITS bits])
])
AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS],
@@ -478,21 +453,7 @@ AC_C_BIGENDIAN([ENDIAN="big"],[ENDIAN="little"],[ENDIAN="unknown"],[ENDIAN="univ
if test "x$ENDIAN" = xuniversal_endianness; then
AC_MSG_ERROR([Building with both big and little endianness is not supported])
fi
if test "x$ENDIAN" = xunknown; then
ENDIAN="$OPENJDK_TARGET_CPU_ENDIAN"
fi
if test "x$ENDIAN" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then
AC_MSG_WARN([The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)])
ENDIAN="$OPENJDK_TARGET_CPU_ENDIAN"
AC_MSG_ERROR([The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)])
fi
AC_SUBST(ENDIAN)
])
AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ISADIR],
[
###############################################################################
#
# Could someone enlighten this configure script with a comment about libCrun?
#
#
])

View File

@@ -250,31 +250,8 @@ fi
AC_DEFUN_ONCE([SRCDIRS_SETUP_OUTPUT_DIRS],
[
LANGTOOLS_OUTPUTDIR="$OUTPUT_ROOT/langtools"
CORBA_OUTPUTDIR="$OUTPUT_ROOT/corba"
JAXP_OUTPUTDIR="$OUTPUT_ROOT/jaxp"
JAXWS_OUTPUTDIR="$OUTPUT_ROOT/jaxws"
HOTSPOT_OUTPUTDIR="$OUTPUT_ROOT/hotspot"
BUILD_OUTPUT="$OUTPUT_ROOT"
AC_SUBST(BUILD_OUTPUT)
JDK_OUTPUTDIR="$OUTPUT_ROOT/jdk"
IMAGES_OUTPUTDIR="$OUTPUT_ROOT/images"
AC_SUBST(LANGTOOLS_OUTPUTDIR)
AC_SUBST(CORBA_OUTPUTDIR)
AC_SUBST(JAXP_OUTPUTDIR)
AC_SUBST(JAXWS_OUTPUTDIR)
AC_SUBST(HOTSPOT_OUTPUTDIR)
AC_SUBST(JDK_OUTPUTDIR)
AC_SUBST(IMAGES_OUTPUTDIR)
LANGTOOLS_DIST="$OUTPUT_ROOT/langtools/dist"
CORBA_DIST="$OUTPUT_ROOT/corba/dist"
JAXP_DIST="$OUTPUT_ROOT/jaxp/dist"
JAXWS_DIST="$OUTPUT_ROOT/jaxws/dist"
HOTSPOT_DIST="$OUTPUT_ROOT/hotspot/dist"
AC_SUBST(LANGTOOLS_DIST)
AC_SUBST(CORBA_DIST)
AC_SUBST(JAXP_DIST)
AC_SUBST(JAXWS_DIST)
AC_SUBST(HOTSPOT_DIST)
])

View File

@@ -23,7 +23,11 @@
# questions.
#
# Configured @DATE_WHEN_CONFIGURED@ to build for a @OPENJDK_TARGET_SYSTEM@ system,
# Configured @DATE_WHEN_CONFIGURED@ to build
# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@
# (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf)
# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@
# (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf)
# using 'configure @CONFIGURE_COMMAND_LINE@'
# When calling macros, the spaces between arguments are
@@ -40,6 +44,17 @@ DQUOTE:="
define NEWLINE:=
endef
# A self-referential reference to this file.
SPEC:=@SPEC@
# Specify where the spec file is.
MAKE_ARGS="SPEC=$(SPEC)"
# TODO The logic for finding and setting MAKE is currently not working
# well on windows. Disable it TEMPORARILY there for now.
ifneq (@OPENJDK_TARGET_OS@,windows)
MAKE:=@MAKE@
endif
# Pass along the verbosity setting.
ifeq (,$(findstring VERBOSE=,$(MAKE)))
@@ -51,27 +66,16 @@ ifeq (,$(findstring -R,$(MAKE)))
MAKE:=$(MAKE) -R
endif
# Specify where the spec file is.
ifeq (,$(findstring SPEC=,$(MAKE)))
MAKE:=$(MAKE) SPEC=@SPEC@
endif
# Specify where the common include directory for makefiles is.
ifeq (,$(findstring -I @SRC_ROOT@/common/makefiles,$(MAKE)))
MAKE:=$(MAKE) -I @SRC_ROOT@/common/makefiles
endif
# A self-referential reference to this file.
SPEC:=@SPEC@
# The "human readable" name of this configuration
CONF_NAME:=@CONF_NAME@
# The built jdk will run in this target system.
OPENJDK_TARGET_SYSTEM:=@OPENJDK_TARGET_SYSTEM@
OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
OPENJDK_TARGET_OS_FAMILY:=@OPENJDK_TARGET_OS_FAMILY@
OPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@
OPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
@@ -79,12 +83,20 @@ OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
OPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
OPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
COMPILE_TYPE:=@COMPILE_TYPE@
# Legacy support
OPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
OPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@
OPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@
OPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@
OPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@
OPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
OPENJDK_TARGET_OS_API_DIR:=@OPENJDK_TARGET_OS_API_DIR@
# We are building on this build system.
# When not cross-compiling, it is the same as the target.
OPENJDK_BUILD_SYSTEM:=@OPENJDK_BUILD_SYSTEM@
OPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
OPENJDK_BUILD_OS_FAMILY:=@OPENJDK_BUILD_OS_FAMILY@
OPENJDK_BUILD_OS_API:=@OPENJDK_BUILD_OS_API@
OPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@
@@ -96,21 +108,6 @@ OPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
REQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
REQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
# Old name for OPENJDK_TARGET_OS (aix,bsd,hpux,linux,macosx,solaris,windows etc)
PLATFORM:=@OPENJDK_TARGET_OS@
# Old name for OPENJDK_TARGET_CPU, uses i586 and amd64, instead of ia32 and x64.
ARCH:=@LEGACY_OPENJDK_TARGET_CPU1@
# Yet another name for arch used for an extra subdir below the jvm lib.
# Uses i386 and amd64, instead of ia32 and x64.
LIBARCH:=@LEGACY_OPENJDK_TARGET_CPU2@
# Use to switch between solaris and windows subdirs in the jdk.
LEGACY_OPENJDK_TARGET_OS_API:=@LEGACY_OPENJDK_TARGET_OS_API@
# 32 or 64 bit
ARCH_DATA_MODEL:=@OPENJDK_TARGET_CPU_BITS@
# Legacy setting for building for a 64 bit machine.
# If yes then this expands to _LP64:=1
@LP64@
ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
@SET_OPENJDK@
JIGSAW:=@JIGSAW@
LIBM:=-lm
@@ -143,6 +140,9 @@ JAXWS_TOPDIR:=@JAXWS_TOPDIR@
HOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
COPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
# Location where build customization files may be found
CUSTOM_MAKE_DIR:=@CUSTOM_MAKE_DIR@
# Information gathered from the version.numbers file.
JDK_MAJOR_VERSION:=@JDK_MAJOR_VERSION@
JDK_MINOR_VERSION:=@JDK_MINOR_VERSION@
@@ -171,17 +171,12 @@ DEBUG_LEVEL:=@DEBUG_LEVEL@
# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
JDK_VARIANT:=@JDK_VARIANT@
# Legacy defines controlling the JDK variant embedded.
@JAVASE_EMBEDDED@
@MINIMIZE_RAM_USAGE@
# Should we compile support for running with a graphical UI? (ie headful)
# Should we compile support for running without? (ie headless)
SUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
SUPPORT_HEADLESS:=@SUPPORT_HEADLESS@
# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
@BUILD_HEADLESS@
@BUILD_HEADLESS_ONLY@
# These are the libjvms that we want to build.
# The java launcher uses the default.
@@ -194,53 +189,43 @@ JVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@
JVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
JVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
# Legacy setting: OPT or DBG
VARIANT:=@VARIANT@
# Legacy setting: true or false
FASTDEBUG:=@FASTDEBUG@
# Legacy setting: debugging the class files?
DEBUG_CLASSFILES:=@DEBUG_CLASSFILES@
# Universal binaries on macosx
MACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
# Legacy setting: -debug or -fastdebug
# Still used in version string...
BUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
LANGTOOLS_OUTPUTDIR:=@LANGTOOLS_OUTPUTDIR@
CORBA_OUTPUTDIR:=@CORBA_OUTPUTDIR@
JAXP_OUTPUTDIR:=@JAXP_OUTPUTDIR@
JAXWS_OUTPUTDIR:=@JAXWS_OUTPUTDIR@
HOTSPOT_OUTPUTDIR:=@HOTSPOT_OUTPUTDIR@
# This where a working jvm is built.
# JDK_OUTPUTDIR specifies where a working jvm is built.
# You can run $(JDK_OUTPUTDIR)/bin/java
# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
# yet the same as a default installation.
JDK_OUTPUTDIR:=@OUTPUT_ROOT@/jdk
#
# When you run "make install" it will create the standardized
# layout for the jdk and the jre inside the images subdir.
# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir.
# Then it will copy the contents of the jdk into the installation
# directory.
IMAGES_OUTPUTDIR:=@OUTPUT_ROOT@/images
LANGTOOLS_DIST:=@LANGTOOLS_DIST@
CORBA_DIST:=@CORBA_DIST@
JAXP_DIST:=@JAXP_DIST@
JAXWS_DIST:=@JAXWS_DIST@
HOTSPOT_DIST:=@HOTSPOT_DIST@
BUILD_OUTPUT:=@BUILD_OUTPUT@
LANGTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/langtools
CORBA_OUTPUTDIR=$(BUILD_OUTPUT)/corba
JAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp
JAXWS_OUTPUTDIR=$(BUILD_OUTPUT)/jaxws
HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
# Legacy variables used by Release.gmk
JDK_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/j2sdk-image
JRE_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/j2re-image
# Can be /sparcv9 or /amd64 on Solaris
ISA_DIR:=@LEGACY_OPENJDK_TARGET_CPU3@
BINDIR:=$(JDK_OUTPUTDIR)/bin$(ISA_DIR)
LANGTOOLS_DIST=$(LANGTOOLS_OUTPUTDIR)/dist
CORBA_DIST=$(CORBA_OUTPUTDIR)/dist
JAXP_DIST=$(JAXP_OUTPUTDIR)/dist
JAXWS_DIST=$(JAXWS_OUTPUTDIR)/dist
HOTSPOT_DIST=$(HOTSPOT_OUTPUTDIR)/dist
# The boot jdk to use
ALT_BOOTDIR:=@BOOT_JDK@
BOOT_JDK:=@BOOT_JDK@
BOOT_JDK_JVMARGS:=@BOOT_JDK_JVMARGS@
BOOT_RTJAR:=@BOOT_RTJAR@
BOOT_TOOLSJAR:=@BOOT_TOOLSJAR@
BOOT_TOOLSJAR=$(BOOT_JDK)/lib/tools.jar
# When compiling Java source to be run by the boot jdk
# use these extra flags, eg -source 6 -target 6
@@ -248,30 +233,18 @@ BOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
# Information about the build system
NUM_CORES:=@NUM_CORES@
# This is used from the jdk build for C/C++ code.
PARALLEL_COMPILE_JOBS:=@CONCURRENT_BUILD_JOBS@
# Store javac server synchronization files here, and
# the javac server log files.
JAVAC_SERVERS:=@JAVAC_SERVERS@
# Should we use a javac server or not? The javac server gives
# an enormous performance improvement since it reduces the
# startup costs of javac and reuses as much as possible of intermediate
# compilation work. But if we want to compile with a non-Java
# javac compiler, like gcj. Then we cannot use javac server and
# this variable is set to false.
JAVAC_USE_REMOTE:=@JAVAC_USE_REMOTE@
# Enable sjavac support = use a javac server,
# multi core javac compilation and dependency tracking.
ENABLE_SJAVAC:=@ENABLE_SJAVAC@
# Store sjavac server synchronization files here, and
# the sjavac server log files.
SJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@
# We can block the Javac server to never use more cores than this.
# This is not for performance reasons, but for memory usage, since each
# core requires its own JavaCompiler. We might have 64 cores and 4GB
# of memory, 64 JavaCompilers will currently not fit in a 3GB heap.
# Since there is no sharing of data between the JavaCompilers.
JAVAC_SERVER_CORES:=@JAVAC_SERVER_CORES@
# Should we use dependency tracking between Java packages? true or false.
JAVAC_USE_DEPS:=@JAVAC_USE_DEPS@
# We can invoke javac: SINGLE_THREADED_BATCH or MULTI_CORE_CONCURRENT
JAVAC_USE_MODE:=@JAVAC_USE_MODE@
# Enable not yet complete sjavac support.
ENABLE_SJAVAC:=@ENABLE_SJAVAC@
SJAVAC_SERVER_CORES:=@SJAVAC_SERVER_CORES@
# The OpenJDK makefiles should be changed to using the standard
# configure output ..._CFLAGS and ..._LIBS. In the meantime we
@@ -280,7 +253,6 @@ FREETYPE2_LIB_PATH:=@FREETYPE2_LIB_PATH@
FREETYPE2_LIBS:=@FREETYPE2_LIBS@
FREETYPE2_CFLAGS:=@FREETYPE2_CFLAGS@
USING_SYSTEM_FT_LIB=@USING_SYSTEM_FT_LIB@
ALT_CUPS_HEADERS_PATH:=$(patsubst -I%,%,$(filter -I%,@CUPS_CFLAGS@))
CUPS_CFLAGS:=@CUPS_CFLAGS@
PACKAGE_PATH=@PACKAGE_PATH@
@@ -288,8 +260,6 @@ PACKAGE_PATH=@PACKAGE_PATH@
# Source file for cacerts
CACERTS_FILE=@CACERTS_FILE@
#MOZILLA_HEADERS_PATH:=
# Necessary additional compiler flags to compile X11
X_CFLAGS:=@X_CFLAGS@
X_LIBS:=@X_LIBS@
@@ -338,7 +308,7 @@ OBJC:=@CCACHE@ @OBJC@
CPP:=@UNCYGDRIVE@ @CPP@
#CPPFLAGS:=@CPPFLAGS@
# The linker can be gcc or ld on posix systems, or link.exe on winapi systems.
# The linker can be gcc or ld on posix systems, or link.exe on windows systems.
LD:=@UNCYGDRIVE@ @LD@
# LDFLAGS used to link the jdk native libraries (C-code)
@@ -353,6 +323,9 @@ LDEXE:=@UNCYGDRIVE@ @LDEXE@
LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
LDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@
# LDFLAGS specific to C++ linking.
LDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
# Sometimes a different linker is needed for c++ libs
LDCXX:=@UNCYGDRIVE@ @LDCXX@
# The flags for linking libstdc++ linker.
@@ -361,28 +334,22 @@ LIBCXX:=@LIBCXX@
# Sometimes a different linker is needed for c++ executables
LDEXECXX:=@UNCYGDRIVE@ @LDEXECXX@
# If cross compiling, then define CROSS_COMPILE_ARCH:=cpu_name here.
@DEFINE_CROSS_COMPILE_ARCH@
# The HOSTCC should really be named BUILDCC, ie build executable for
# the build platform. Same as CC when not cross compiling.
HOSTCC:=@UNCYGDRIVE@ @HOSTCC@
HOSTCXX:=@UNCYGDRIVE@ @HOSTCXX@
# And of course, the jdk spells HOSTCC as NIO_CC/HOST_CC
HOST_CC:=@UNCYGDRIVE@ @HOSTCC@
NIO_CC:=@UNCYGDRIVE@ @HOSTCC@
HOST_LD:=@UNCYGDRIVE@ @HOSTLD@
# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
# build platform.
BUILD_CC:=@UNCYGDRIVE@ @BUILD_CC@
BUILD_LD:=@UNCYGDRIVE@ @BUILD_LD@
AS:=@UNCYGDRIVE@ @AS@
ASFLAGS:=@ASFLAGS@
# AR is used to create a static library (is ar in posix, lib.exe in winapi)
# AR is used to create a static library (is ar in posix, lib.exe in windows)
AR:=@UNCYGDRIVE@ @AR@
ARFLAGS:=@ARFLAGS@
NM:=@UNCYGDRIVE@ @NM@
STRIP:=@UNCYGDRIVE@ @STRIP@
MCS:=@UNCYGDRIVE@ @MCS@
NM:=@NM@
STRIP:=@STRIP@
MCS:=@MCS@
LIPO:=@LIPO@
# Command to create a shared library
SHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@
@@ -414,6 +381,7 @@ SET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
# (Note absence of := assignment, because we do not want to evaluate the macro body here)
SET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@
SET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@
# Different OS:es have different ways of naming shared libraries.
# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
@@ -432,21 +400,20 @@ POST_MCS_CMD:=@POST_MCS_CMD@
JAVA_FLAGS:=@BOOT_JDK_JVMARGS@
JAVA=@UNCYGDRIVE@ @JAVA@ $(JAVA_FLAGS)
JAVA=@UNCYGDRIVE@ $(BOOT_JDK)/bin/java $(JAVA_FLAGS)
JAVAC:=@UNCYGDRIVE@ @JAVAC@
JAVAC_FLAGS:=@JAVAC_FLAGS@
JAVAC=@UNCYGDRIVE@ $(BOOT_JDK)/bin/javac
# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
# overriding that value by using ?=.
JAVAC_FLAGS?=@JAVAC_FLAGS@
JAVAH:=@UNCYGDRIVE@ @JAVAH@
JAVAH=@UNCYGDRIVE@ $(BOOT_JDK)/bin/javah
JAR:=@UNCYGDRIVE@ @JAR@
JAR=@UNCYGDRIVE@ $(BOOT_JDK)/bin/jar
RMIC:=@UNCYGDRIVE@ @RMIC@
RMIC=@UNCYGDRIVE@ $(BOOT_JDK)/bin/rmic
NATIVE2ASCII:=@UNCYGDRIVE@ @NATIVE2ASCII@
BOOT_JAR_CMD:=@UNCYGDRIVE@ @JAR@
BOOT_JAR_JFLAGS:=
NATIVE2ASCII=@UNCYGDRIVE@ $(BOOT_JDK)/bin/native2ascii
# Base flags for RC
# Guarding this against resetting value. Legacy make files include spec multiple
@@ -456,11 +423,12 @@ RC_FLAGS:=@RC_FLAGS@
endif
# A specific java binary with specific options can be used to run
# the long running background javac server and other long running tasks.
SERVER_JAVA:=@UNCYGDRIVE@ @SERVER_JAVA@
# the long running background sjavac servers and other long running tasks.
SJAVAC_SERVER_JAVA:=@UNCYGDRIVE@ @SJAVAC_SERVER_JAVA@
# Tools adhering to a minimal and common standard of posix compliance.
AWK:=@AWK@
BASENAME:=@BASENAME@
CAT:=@CAT@
CCACHE:=@CCACHE@
# CD is going away, but remains to cater for legacy makefiles.
@@ -520,8 +488,6 @@ BUILD_LOG_PREVIOUS:=@BUILD_LOG_PREVIOUS@
BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@
# Build setup
ENABLE_DOCS:=@ENABLE_DOCS@
GENERATE_DOCS:=@ENABLE_DOCS@
DISABLE_NIMBUS:=@DISABLE_NIMBUS@
ENABLE_JFR=@ENABLE_JFR@
USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
@@ -559,17 +525,6 @@ else
OVR_SRCS:=
endif
####################################################
#
# Legacy Hotspot support
HOTSPOT_DIST:=@HOTSPOT_DIST@
HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@
# This is used from the libjvm build for C/C++ code.
HOTSPOT_BUILD_JOBS:=@CONCURRENT_BUILD_JOBS@
# Control wether Hotspot runs Queens test after building
TEST_IN_BUILD=@TEST_IN_BUILD@
####################################################
#
# INSTALLATION
@@ -634,5 +589,5 @@ OS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
OS_VERSION_MINOR:=@OS_VERSION_MINOR@
OS_VERSION_MICRO:=@OS_VERSION_MICRO@
# Include the closed-spec.gmk file if it exists
-include $(dir @SPEC@)/closed-spec.gmk
# Include the custom-spec.gmk file if it exists
-include $(dir @SPEC@)/custom-spec.gmk

View File

@@ -23,505 +23,14 @@
# questions.
#
# Configured"@DATE_WHEN_CONFIGURED@ to build for a @OPENJDK_TARGET_SYSTEM@ system,
# using 'configure @CONFIGURE_COMMAND_LINE@'
# The "human readable" name of this configuration
CONF_NAME="@CONF_NAME@"
# The built jdk will run in this target system.
OPENJDK_TARGET_SYSTEM="@OPENJDK_TARGET_SYSTEM@"
OPENJDK_TARGET_OS="@OPENJDK_TARGET_OS@"
OPENJDK_TARGET_OS_FAMILY="@OPENJDK_TARGET_OS_FAMILY@"
OPENJDK_TARGET_OS_API="@OPENJDK_TARGET_OS_API@"
OPENJDK_TARGET_CPU="@OPENJDK_TARGET_CPU@"
OPENJDK_TARGET_CPU_ARCH="@OPENJDK_TARGET_CPU_ARCH@"
OPENJDK_TARGET_CPU_BITS="@OPENJDK_TARGET_CPU_BITS@"
OPENJDK_TARGET_CPU_ENDIAN="@OPENJDK_TARGET_CPU_ENDIAN@"
# We are building on this build system.
# When not cross-compiling, it is the same as the target.
OPENJDK_BUILD_SYSTEM="@OPENJDK_BUILD_SYSTEM@"
OPENJDK_BUILD_OS="@OPENJDK_BUILD_OS@"
OPENJDK_BUILD_OS_FAMILY="@OPENJDK_BUILD_OS_FAMILY@"
OPENJDK_BUILD_OS_API="@OPENJDK_BUILD_OS_API@"
OPENJDK_BUILD_CPU="@OPENJDK_BUILD_CPU@"
OPENJDK_BUILD_CPU_ARCH="@OPENJDK_BUILD_CPU_ARCH@"
OPENJDK_BUILD_CPU_BITS="@OPENJDK_BUILD_CPU_BITS@"
OPENJDK_BUILD_CPU_ENDIAN="@OPENJDK_BUILD_CPU_ENDIAN@"
# Legacy OS values for use in release file.
REQUIRED_OS_NAME="@REQUIRED_OS_NAME@"
REQUIRED_OS_VERSION="@REQUIRED_OS_VERSION@"
# Old name for OPENJDK_TARGET_OS (aix,bsd,hpux,linux,macosx,solaris,windows etc)
PLATFORM="@OPENJDK_TARGET_OS@"
# Old name for OPENJDK_TARGET_CPU, uses i586 and amd64, instead of ia32 and x64.
ARCH="@LEGACY_OPENJDK_TARGET_CPU1@"
# Yet another name for arch used for an extra subdir below the jvm lib.
# Uses i386 and amd64, instead of ia32 and x64.
LIBARCH="@LEGACY_OPENJDK_TARGET_CPU2@"
# Use to switch between solaris and windows subdirs in the jdk.
LEGACY_OPENJDK_TARGET_OS_API="@LEGACY_OPENJDK_TARGET_OS_API@"
# 32 or 64 bit
ARCH_DATA_MODEL="@OPENJDK_TARGET_CPU_BITS@"
# Legacy setting for building for a 64 bit machine.
# If yes then this expands to _LP64=1
ENDIAN="@OPENJDK_TARGET_CPU_ENDIAN@"
JIGSAW="@JIGSAW@"
LIBM=-lm
LIBDL="@LIBDL@"
# colon or semicolon
PATH_SEP="@PATH_SEP@"
# The sys root where standard headers and libraries are found.
# Usually not needed since the configure script should have
# taken it into account already when setting CFLAGS et al.
SYS_ROOT="@SYS_ROOT@"
# Paths to the source code
SRC_ROOT="@SRC_ROOT@"
ADD_SRC_ROOT="@ADD_SRC_ROOT@"
OVERRIDE_SRC_ROOT="@OVERRIDE_SRC_ROOT@"
TOPDIR="@SRC_ROOT@"
OUTPUT_ROOT="@OUTPUT_ROOT@"
JDK_MAKE_SHARED_DIR="@JDK_TOPDIR@"/makefiles/common/shared
JDK_TOPDIR="@JDK_TOPDIR@"
LANGTOOLS_TOPDIR="@LANGTOOLS_TOPDIR@"
CORBA_TOPDIR="@CORBA_TOPDIR@"
JAXP_TOPDIR="@JAXP_TOPDIR@"
JAXWS_TOPDIR="@JAXWS_TOPDIR@"
HOTSPOT_TOPDIR="@HOTSPOT_TOPDIR@"
COPYRIGHT_YEAR="@COPYRIGHT_YEAR@"
# Information gathered from the version.numbers file.
JDK_MAJOR_VERSION="@JDK_MAJOR_VERSION@"
JDK_MINOR_VERSION="@JDK_MINOR_VERSION@"
JDK_MICRO_VERSION="@JDK_MICRO_VERSION@"
JDK_UPDATE_VERSION="@JDK_UPDATE_VERSION@"
JDK_BUILD_NUMBER="@JDK_BUILD_NUMBER@"
MILESTONE="@MILESTONE@"
LAUNCHER_NAME="@LAUNCHER_NAME@"
PRODUCT_NAME="@PRODUCT_NAME@"
PRODUCT_SUFFIX="@PRODUCT_SUFFIX@"
JDK_RC_PLATFORM_NAME="@JDK_RC_PLATFORM_NAME@"
COMPANY_NAME="@COMPANY_NAME@"
# Different version strings generated from the above information.
JDK_VERSION="@JDK_VERSION@"
RUNTIME_NAME="@RUNTIME_NAME@"
FULL_VERSION="@FULL_VERSION@"
JRE_RELEASE_VERSION="@FULL_VERSION@"
RELEASE="@RELEASE@"
COOKED_BUILD_NUMBER="@COOKED_BUILD_NUMBER@"
# How to compile the code: release, fastdebug or slowdebug
DEBUG_LEVEL="@DEBUG_LEVEL@"
# This is the JDK variant to build.
# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
JDK_VARIANT="@JDK_VARIANT@"
# Should we compile support for running with a graphical UI? (ie headful)
# Should we compile support for running without? (ie headless)
SUPPORT_HEADFUL="@SUPPORT_HEADFUL@"
SUPPORT_HEADLESS="@SUPPORT_HEADLESS@"
# These are the libjvms that we want to build.
# The java launcher uses the default.
# The other can be selected by specifying -client -server -kernel -zero or -zeroshark
# on the java launcher command line.
JVM_VARIANTS="@JVM_VARIANTS@"
JVM_VARIANT_SERVER="@JVM_VARIANT_SERVER@"
JVM_VARIANT_CLIENT="@JVM_VARIANT_CLIENT@"
JVM_VARIANT_KERNEL="@JVM_VARIANT_KERNEL@"
JVM_VARIANT_ZERO="@JVM_VARIANT_ZERO@"
JVM_VARIANT_ZEROSHARK="@JVM_VARIANT_ZEROSHARK@"
# Legacy setting: OPT or DBG
VARIANT="@VARIANT@"
# Legacy setting: true or false
FASTDEBUG="@FASTDEBUG@"
# Legacy setting: debugging the class files?
DEBUG_CLASSFILES="@DEBUG_CLASSFILES@"
# Legacy setting: -debug or -fastdebug
BUILD_VARIANT_RELEASE="@BUILD_VARIANT_RELEASE@"
LANGTOOLS_OUTPUTDIR="@LANGTOOLS_OUTPUTDIR@"
CORBA_OUTPUTDIR="@CORBA_OUTPUTDIR@"
JAXP_OUTPUTDIR="@JAXP_OUTPUTDIR@"
JAXWS_OUTPUTDIR="@JAXWS_OUTPUTDIR@"
HOTSPOT_OUTPUTDIR="@HOTSPOT_OUTPUTDIR@"
# This where a working jvm is built.
# You can run ${JDK_OUTPUTDIR}/bin/java
# Though the layout of the contents of ${JDK_OUTPUTDIR} is not
# yet the same as a default installation.
JDK_OUTPUTDIR="@OUTPUT_ROOT@"/jdk
# When you run "make install" it will create the standardized
# layout for the jdk and the jre inside the images subdir.
# Then it will copy the contents of the jdk into the installation
# directory.
IMAGES_OUTPUTDIR="@OUTPUT_ROOT@"/images
LANGTOOLS_DIST="@LANGTOOLS_DIST@"
CORBA_DIST="@CORBA_DIST@"
JAXP_DIST="@JAXP_DIST@"
JAXWS_DIST="@JAXWS_DIST@"
HOTSPOT_DIST="@HOTSPOT_DIST@"
# Legacy variables used by Release.gmk
JDK_IMAGE_DIR=${IMAGES_OUTPUTDIR}/j2sdk-image
JRE_IMAGE_DIR=${IMAGES_OUTPUTDIR}/j2re-image
# Can be /sparcv9 or /amd64 on Solaris
ISA_DIR="@LEGACY_OPENJDK_TARGET_CPU3@"
BINDIR="${JDK_OUTPUTDIR}/bin${ISA_DIR}"
# The boot jdk to use
ALT_BOOTDIR="@BOOT_JDK@"
BOOT_JDK="@BOOT_JDK@"
BOOT_JDK_JVMARGS="@BOOT_JDK_JVMARGS@"
BOOT_RTJAR="@BOOT_RTJAR@"
BOOT_TOOLSJAR="@BOOT_TOOLSJAR@"
# When compiling Java source to be run by the boot jdk
# use these extra flags, eg -source 6 -target 6
BOOT_JDK_SOURCETARGET="@BOOT_JDK_SOURCETARGET@"
# Information about the build system
NUM_CORES="@NUM_CORES@"
# This is used from the jdk build for C/C++ code.
PARALLEL_COMPILE_JOBS="@CONCURRENT_BUILD_JOBS@"
# Store javac server synchronization files here, and
# the javac server log files.
JAVAC_SERVERS="@JAVAC_SERVERS@"
# Should we use a javac server or not? The javac server gives
# an enormous performance improvement since it reduces the
# startup costs of javac and reuses as much as possible of intermediate
# compilation work. But if we want to compile with a non-Java
# javac compiler, like gcj. Then we cannot use javac server and
# this variable is set to false.
JAVAC_USE_REMOTE="@JAVAC_USE_REMOTE@"
# We can block the Javac server to never use more cores than this.
# This is not for performance reasons, but for memory usage, since each
# core requires its own JavaCompiler. We might have 64 cores and 4GB
# of memory, 64 JavaCompilers will currently not fit in a 3GB heap.
# Since there is no sharing of data between the JavaCompilers.
JAVAC_SERVER_CORES="@JAVAC_SERVER_CORES@"
# Should we use dependency tracking between Java packages? true or false.
JAVAC_USE_DEPS="@JAVAC_USE_DEPS@"
# We can invoke javac: SINGLE_THREADED_BATCH or MULTI_CORE_CONCURRENT
JAVAC_USE_MODE="@JAVAC_USE_MODE@"
# Enable not yet complete sjavac support.
ENABLE_SJAVAC="@ENABLE_SJAVAC@"
# The OpenJDK makefiles should be changed to using the standard
# configure output ..._CFLAGS and ..._LIBS. In the meantime we
# extract the information here.
FREETYPE2_LIB_PATH="@FREETYPE2_LIB_PATH@"
FREETYPE2_LIBS="@FREETYPE2_LIBS@"
FREETYPE2_CFLAGS="@FREETYPE2_CFLAGS@"
USING_SYSTEM_FT_LIB="@USING_SYSTEM_FT_LIB@"
CUPS_CFLAGS="@CUPS_CFLAGS@"
PACKAGE_PATH="@PACKAGE_PATH@"
# Source file for cacerts
CACERTS_FILE="@CACERTS_FILE@"
#MOZILLA_HEADERS_PATH=
# Necessary additional compiler flags to compile X11
X_CFLAGS="@X_CFLAGS@"
X_LIBS="@X_LIBS@"
OPENWIN_HOME="@OPENWIN_HOME@"
# There are two types: CC or CL
# CC is gcc and others behaving reasonably similar.
# CL is cl.exe only.
COMPILER_TYPE="@COMPILER_TYPE@"
# Flags used for overriding the default opt setting for a C/C++ source file.
C_O_FLAG_HIGHEST="@C_O_FLAG_HIGHEST@"
C_O_FLAG_HI="@C_O_FLAG_HI@"
C_O_FLAG_NORM="@C_O_FLAG_NORM@"
C_O_FLAG_NONE="@C_O_FLAG_NONE@"
CXX_O_FLAG_HIGHEST="@CXX_O_FLAG_HIGHEST@"
CXX_O_FLAG_HI="@CXX_O_FLAG_HI@"
CXX_O_FLAG_NORM="@CXX_O_FLAG_NORM@"
CXX_O_FLAG_NONE="@CXX_O_FLAG_NONE@"
C_FLAG_DEPS="@C_FLAG_DEPS@"
CXX_FLAG_DEPS="@CXX_FLAG_DEPS@"
# Tools that potentially need to be cross compilation aware.
CC="@UNCYGDRIVE@ @CCACHE@ @CC@"
# CFLAGS used to compile the jdk native libraries (C-code)
CFLAGS_JDKLIB="@CFLAGS_JDKLIB@"
CXXFLAGS_JDKLIB="@CXXFLAGS_JDKLIB@"
# CFLAGS used to compile the jdk native launchers (C-code)
CFLAGS_JDKEXE="@CFLAGS_JDKEXE@"
CXXFLAGS_JDKEXE="@CXXFLAGS_JDKEXE@"
CXX="@UNCYGDRIVE@ @CCACHE@ @CXX@"
#CXXFLAGS="@CXXFLAGS@"
OBJC="@CCACHE@ @OBJC@"
#OBJCFLAGS="@OBJCFLAGS@"
CPP="@UNCYGDRIVE@ @CPP@"
#CPPFLAGS="@CPPFLAGS@"
# The linker can be gcc or ld on posix systems, or link.exe on winapi systems.
LD="@UNCYGDRIVE@ @LD@"
# LDFLAGS used to link the jdk native libraries (C-code)
LDFLAGS_JDKLIB="@LDFLAGS_JDKLIB@"
LDFLAGS_JDKLIB_SUFFIX="@LDFLAGS_JDKLIB_SUFFIX@"
# On some platforms the linker cannot be used to create executables, thus
# the need for a separate LDEXE command.
LDEXE="@UNCYGDRIVE@ @LDEXE@"
# LDFLAGS used to link the jdk native launchers (C-code)
LDFLAGS_JDKEXE="@LDFLAGS_JDKEXE@"
LDFLAGS_JDKEXE_SUFFIX="@LDFLAGS_JDKEXE_SUFFIX@"
# Sometimes a different linker is needed for c++ libs
LDCXX="@UNCYGDRIVE@ @LDCXX@"
# The flags for linking libstdc++ linker.
LIBCXX="@LIBCXX@"
# Sometimes a different linker is needed for c++ executables
LDEXECXX="@UNCYGDRIVE@ @LDEXECXX@"
# If cross compiling, then define CROSS_COMPILE_ARCH=cpu_name here.
# The HOSTCC should really be named BUILDCC, ie build executable for
# the build platform. Same as CC when not cross compiling.
HOSTCC="@HOSTCC@"
HOSTCXX="@HOSTCXX@"
# And of course, the jdk spells HOSTCC as NIO_CC/HOST_CC
HOST_CC="@HOSTCC@"
NIO_CC="@HOSTCC@"
AS="@AS@"
ASFLAGS="@ASFLAGS@"
# AR is used to create a static library (is ar in posix, lib.exe in winapi)
AR="@UNCYGDRIVE@ @AR@"
ARFLAGS="@ARFLAGS@"
NM="@NM@"
STRIP="@STRIP@"
MCS="@MCS@"
# Command to create a shared library
SHARED_LIBRARY_FLAGS="@SHARED_LIBRARY_FLAGS@"
# Options to linker to specify a mapfile.
# (Note absence of = assignment, because we do not want to evaluate the macro body here)
SET_SHARED_LIBRARY_MAPFILE="@SET_SHARED_LIBRARY_MAPFILE@"
# Options for C/CXX compiler to be used if linking is performed
# using reorder file
C_FLAG_REORDER="@C_FLAG_REORDER@"
CXX_FLAG_REORDER="@CXX_FLAG_REORDER@"
#
# Options for generating debug symbols
ENABLE_DEBUG_SYMBOLS="@ENABLE_DEBUG_SYMBOLS@"
CFLAGS_DEBUG_SYMBOLS="@CFLAGS_DEBUG_SYMBOLS@"
CXXFLAGS_DEBUG_SYMBOLS="@CXXFLAGS_DEBUG_SYMBOLS@"
ZIP_DEBUGINFO_FILES="@ZIP_DEBUGINFO_FILES@"
# Options to linker to specify the library name.
# (Note absence of = assignment, because we do not want to evaluate the macro body here)
SET_SHARED_LIBRARY_NAME="@SET_SHARED_LIBRARY_NAME@"
# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
# (Note absence of = assignment, because we do not want to evaluate the macro body here)
SET_SHARED_LIBRARY_ORIGIN="@SET_SHARED_LIBRARY_ORIGIN@"
# Different OS:es have different ways of naming shared libraries.
# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
# "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform.
# (Note absence of = assignment, because we do not want to evaluate the macro body here)
SHARED_LIBRARY="@SHARED_LIBRARY@"
STATIC_LIBRARY="@STATIC_LIBRARY@"
LIBRARY_PREFIX="@LIBRARY_PREFIX@"
SHARED_LIBRARY_SUFFIX="@SHARED_LIBRARY_SUFFIX@"
STATIC_LIBRARY_SUFFIX="@STATIC_LIBRARY_SUFFIX@"
EXE_SUFFIX="@EXE_SUFFIX@"
OBJ_SUFFIX="@OBJ_SUFFIX@"
POST_STRIP_CMD="@POST_STRIP_CMD@"
POST_MCS_CMD='@POST_MCS_CMD@'
JAVA_FLAGS="@BOOT_JDK_JVMARGS@"
JAVA="@UNCYGDRIVE@ @JAVA@ ${JAVA_FLAGS}"
JAVAC="@UNCYGDRIVE@ @JAVAC@"
JAVAC_FLAGS="@JAVAC_FLAGS@"
JAVAH="@UNCYGDRIVE@ @JAVAH@"
JAR="@UNCYGDRIVE@ @JAR@"
RMIC="@UNCYGDRIVE@ @RMIC@"
NATIVE2ASCII="@UNCYGDRIVE@ @NATIVE2ASCII@"
BOOT_JAR_CMD="@UNCYGDRIVE@ @JAR@"
BOOT_JAR_JFLAGS=
# Tools adhering to a minimal and common standard of posix compliance.
AWK="@AWK@"
CAT="@CAT@"
CCACHE="@CCACHE@"
# CD is going away, but remains to cater for legacy makefiles.
CD=cd
CHMOD="@CHMOD@"
CP="@CP@"
CPIO="@CPIO@"
CUT="@CUT@"
DATE="@DATE@"
DF="@DF@"
DIFF="@DIFF@"
FIND="@FIND@"
FIND_DELETE="@FIND_DELETE@"
ECHO="@ECHO@"
EGREP="@EGREP@"
FGREP="@FGREP@"
FIND="@FIND@"
GREP="@GREP@"
HEAD="@HEAD@"
LS="@LS@"
LN="@LN@"
MKDIR="@MKDIR@"
MV="@MV@"
NAWK="@NAWK@"
PRINTF="@PRINTF@"
PWD="@THEPWDCMD@"
RM="@RM@"
SED="@SED@"
SH="@SH@"
SORT="@SORT@"
TAR="@TAR@"
TAIL="@TAIL@"
TEE="@TEE@"
TR="@TR@"
TOUCH="@TOUCH@"
WC="@WC@"
XARGS="@XARGS@"
ZIPEXE="@ZIP@"
ZIP="@ZIP@"
UNZIP="@UNZIP@"
MT="@UNCYGDRIVE@ @MT@"
RC="@UNCYGDRIVE@ @RC@"
DUMPBIN="@UNCYGDRIVE@ @DUMPBIN@"
CYGPATH="@CYGPATH@"
LDD="@LDD@"
OTOOL="@OTOOL@"
READELF="@READELF@"
EXPR="@EXPR@"
FILE="@FILE@"
HG="@HG@"
OBJCOPY="@OBJCOPY@"
UNCYGDRIVE="@UNCYGDRIVE@"
# Build setup
ENABLE_DOCS="@ENABLE_DOCS@"
GENERATE_DOCS="@ENABLE_DOCS@"
DISABLE_NIMBUS="@DISABLE_NIMBUS@"
USE_EXTERNAL_LIBJPEG="@USE_EXTERNAL_LIBJPEG@"
USE_EXTERNAL_LIBGIF="@USE_EXTERNAL_LIBGIF@"
USE_EXTERNAL_LIBZ="@USE_EXTERNAL_LIBZ@"
LIBZIP_CAN_USE_MMAP="@LIBZIP_CAN_USE_MMAP@"
CHECK_FOR_VCINSTALLDIR="@CHECK_FOR_VCINSTALLDIR@"
MSVCRNN_DLL="@MSVCR100DLL@"
####################################################
#
# Legacy Hotspot support
HOTSPOT_DIST="@HOTSPOT_DIST@"
HOTSPOT_MAKE_ARGS="@HOTSPOT_MAKE_ARGS@"
# This is used from the libjvm build for C/C++ code.
HOTSPOT_BUILD_JOBS="@CONCURRENT_BUILD_JOBS@"
# Control wether Hotspot runs Queens test after building
TEST_IN_BUILD="@TEST_IN_BUILD@"
####################################################
#
# INSTALLATION
#
# Common prefix for all installed files. Defaults to /usr/local,
# but /opt/myjdk is another common version.
INSTALL_PREFIX="@prefix@"
# Directories containing architecture-dependent files should be relative to exec_prefix
INSTALL_EXECPREFIX="@exec_prefix@"
# java,javac,javah,javap etc are installed here.
INSTALL_BINDIR="@bindir@"
# Read only architecture-independent data
INSTALL_DATADIR="@datadir@"
# Root of above.
INSTALL_DATAROOTDIR="@datarootdir@"
# Doc files, other than info and man.
INSTALL_DOCDIR="@docdir@"
# Html documentation
INSTALL_HTMLDIR="@htmldir@"
# Installing C header files, JNI headers for example.
INSTALL_INCLUDEDIR="@includedir@"
# Installing library files....
INSTALL_INCLUDEDIR="@libdir@"
# Executables that other programs run.
INSTALL_LIBEXECDIR="@libexecdir@"
# Locale-dependent but architecture-independent data, such as message catalogs.
INSTALL_LOCALEDIR="@localedir@"
# Modifiable single-machine data
INSTALL_LOCALSTATEDIR="@localstatedir@"
# Man pages
INSTALL_MANDIR="@mandir@"
# Modifiable architecture-independent data.
INSTALL_SHAREDSTATEDIR="@sharedstatedir@"
# Read-only single-machine data
INSTALL_SYSCONFDIR="@sysconfdir@"
####################################################
#
# Misc
#
# Name of Service Agent library
SALIB_NAME="@SALIB_NAME@"
OS_VERSION_MAJOR="@OS_VERSION_MAJOR@"
OS_VERSION_MINOR="@OS_VERSION_MINOR@"
OS_VERSION_MICRO="@OS_VERSION_MICRO@"
POST_STRIP_CMD="@POST_STRIP_CMD@"

View File

@@ -31,6 +31,19 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
# the set env variables into the spec file.
SETUPDEVENV="# No special vars"
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
# Store path to cygwin link.exe to help excluding it when searching for
# VS linker.
AC_PATH_PROG(CYGWIN_LINK, link)
AC_MSG_CHECKING([if the first found link.exe is actually the Cygwin link tool])
"$CYGWIN_LINK" --version > /dev/null
if test $? -eq 0 ; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
# This might be the VS linker. Don't exclude it later on.
CYGWIN_LINK=""
fi
# If vcvarsall.bat has been run, then VCINSTALLDIR is set.
if test "x$VCINSTALLDIR" != x; then
# No further setup is needed. The build will happen from this kind
@@ -57,12 +70,12 @@ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([Tried to find a VS installation using both $SEARCH_ROOT but failed. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
fi
case "$LEGACY_OPENJDK_TARGET_CPU1" in
i?86)
case "$OPENJDK_TARGET_CPU" in
x86)
VARSBAT_ARCH=x86
;;
*)
VARSBAT_ARCH=$LEGACY_OPENJDK_TARGET_CPU1
x86_64)
VARSBAT_ARCH=amd64
;;
esac
# Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
@@ -122,9 +135,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_SYSROOT_AND_OUT_OPTIONS],
# Configure the development tool paths and potential sysroot.
#
AC_LANG(C++)
DEVKIT=
SYS_ROOT=/
AC_SUBST(SYS_ROOT)
# The option used to specify the target .o,.a or .so file.
# When compiling, how to specify the to be created object file.
@@ -153,44 +163,28 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_PATHS],
# Setting only --host, does not seem to be really supported.
# Please set both --build and --host if you want to cross compile.
DEFINE_CROSS_COMPILE_ARCH=""
HOSTCC=""
HOSTCXX=""
HOSTLD=""
AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
AC_MSG_CHECKING([if this is a cross compile])
if test "x$OPENJDK_BUILD_SYSTEM" != "x$OPENJDK_TARGET_SYSTEM"; then
AC_MSG_RESULT([yes, from $OPENJDK_BUILD_SYSTEM to $OPENJDK_TARGET_SYSTEM])
# We have detected a cross compile!
DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$LEGACY_OPENJDK_TARGET_CPU1"
if test "x$COMPILE_TYPE" = "xcross"; then
# Now we to find a C/C++ compiler that can build executables for the build
# platform. We can't use the AC_PROG_CC macro, since it can only be used
# once.
AC_PATH_PROGS(HOSTCC, [cl cc gcc])
WHICHCMD(HOSTCC)
AC_PATH_PROGS(HOSTCXX, [cl CC g++])
WHICHCMD(HOSTCXX)
AC_PATH_PROG(HOSTLD, ld)
WHICHCMD(HOSTLD)
# Building for the build platform should be easy. Therefore
# we do not need any linkers or assemblers etc.
else
AC_MSG_RESULT([no])
# once. Also, we need to do this before adding a tools dir to the path,
# otherwise we might pick up cross-compilers which don't use standard naming.
# Otherwise, we'll set the BUILD_tools to the native tools, but that'll have
# to wait until they are properly discovered.
AC_PATH_PROGS(BUILD_CC, [cl cc gcc])
SET_FULL_PATH(BUILD_CC)
AC_PATH_PROGS(BUILD_CXX, [cl CC g++])
SET_FULL_PATH(BUILD_CXX)
AC_PATH_PROG(BUILD_LD, ld)
SET_FULL_PATH(BUILD_LD)
fi
AC_SUBST(BUILD_CC)
AC_SUBST(BUILD_CXX)
AC_SUBST(BUILD_LD)
# You can force the sys-root if the sys-root encoded into the cross compiler tools
# is not correct.
AC_ARG_WITH(sys-root, [AS_HELP_STRING([--with-sys-root],
[pass this sys-root to the compilers and linker (useful if the sys-root encoded in
the cross compiler tools is incorrect)])])
if test "x$with_sys_root" != x; then
SYS_ROOT=$with_sys_root
fi
# If a devkit is found on the builddeps server, then prepend its path to the
# PATH variable. If there are cross compilers available in the devkit, these
# will be found by AC_PROG_CC et al.
DEVKIT=
BDEPS_CHECK_MODULE(DEVKIT, devkit, xxx,
[# Found devkit
PATH="$DEVKIT/bin:$PATH"
@@ -218,21 +212,6 @@ ORG_CFLAGS="$CFLAGS"
ORG_CXXFLAGS="$CXXFLAGS"
ORG_OBJCFLAGS="$OBJCFLAGS"
AC_ARG_WITH([tools-dir], [AS_HELP_STRING([--with-tools-dir],
[search this directory for compilers and tools])], [TOOLS_DIR=$with_tools_dir])
AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
[use this directory as base for tools-dir and sys-root])], [
if test "x$with_sys_root" != x; then
AC_MSG_ERROR([Cannot specify both --with-devkit and --with-sys-root at the same time])
fi
if test "x$with_tools_dir" != x; then
AC_MSG_ERROR([Cannot specify both --with-devkit and --with-tools-dir at the same time])
fi
TOOLS_DIR=$with_devkit/bin
SYS_ROOT=$with_devkit/$host_alias/libc
])
# autoconf magic only relies on PATH, so update it if tools dir is specified
OLD_PATH="$PATH"
if test "x$TOOLS_DIR" != x; then
@@ -251,7 +230,7 @@ if test "x$CC" = xcc && test "x$OPENJDK_BUILD_OS" = xmacosx; then
# Do not use cc on MacOSX use gcc instead.
CC="gcc"
fi
WHICHCMD(CC)
SET_FULL_PATH(CC)
AC_PROG_CXX([cl CC g++])
if test "x$CXX" = xCC && test "x$OPENJDK_BUILD_OS" = xmacosx; then
@@ -259,7 +238,7 @@ if test "x$CXX" = xCC && test "x$OPENJDK_BUILD_OS" = xmacosx; then
# c++ code. Override.
CXX="g++"
fi
WHICHCMD(CXX)
SET_FULL_PATH(CXX)
if test "x$CXX" = x || test "x$CC" = x; then
HELP_MSG_MISSING_DEPENDENCY([devkit])
@@ -268,7 +247,7 @@ fi
if test "x$OPENJDK_BUILD_OS" != xwindows; then
AC_PROG_OBJC
WHICHCMD(OBJC)
SET_FULL_PATH(OBJC)
else
OBJC=
fi
@@ -279,19 +258,11 @@ CFLAGS="$ORG_CFLAGS"
CXXFLAGS="$ORG_CXXFLAGS"
OBJCFLAGS="$ORG_OBJCFLAGS"
# If we are not cross compiling, use the same compilers for
# building the build platform executables.
if test "x$DEFINE_CROSS_COMPILE_ARCH" = x; then
HOSTCC="$CC"
HOSTCXX="$CXX"
fi
AC_CHECK_TOOL(LD, ld)
WHICHCMD(LD)
LD="$CC"
LDEXE="$CC"
LDCXX="$CXX"
LDEXECXX="$CXX"
AC_SUBST(LD)
# LDEXE is the linker to use, when creating executables.
AC_SUBST(LDEXE)
# Linking C++ libraries.
@@ -299,8 +270,10 @@ AC_SUBST(LDCXX)
# Linking C++ executables.
AC_SUBST(LDEXECXX)
AC_CHECK_TOOL(AR, ar)
WHICHCMD(AR)
if test "x$OPENJDK_BUILD_OS" != xwindows; then
AC_CHECK_TOOL(AR, ar)
SET_FULL_PATH(AR)
fi
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
ARFLAGS="-r"
else
@@ -316,25 +289,31 @@ AS_IF([test "x$OPENJDK_BUILD_OS" = xwindows], [
EXE_OUT_OPTION=-out:
LD_OUT_OPTION=-out:
AR_OUT_OPTION=-out:
# On Windows, reject /usr/bin/link, which is a cygwin
# On Windows, reject /usr/bin/link (as determined in CYGWIN_LINK), which is a cygwin
# program for something completely different.
AC_CHECK_PROG([WINLD], [link],[link],,, [/usr/bin/link])
AC_CHECK_PROG([WINLD], [link],[link],,, [$CYGWIN_LINK])
# Since we must ignore the first found link, WINLD will contain
# the full path to the link.exe program.
WHICHCMD_SPACESAFE([WINLD])
SET_FULL_PATH_SPACESAFE([WINLD])
printf "Windows linker was found at $WINLD\n"
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
"$WINLD" --version > /dev/null
if test $? -eq 0 ; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
else
AC_MSG_RESULT([yes])
fi
LD="$WINLD"
LDEXE="$WINLD"
LDCXX="$WINLD"
LDEXECXX="$WINLD"
# Set HOSTLD to same as LD until we fully support cross compilation
# on windows.
HOSTLD="$WINLD"
AC_CHECK_PROG([MT], [mt], [mt],,, [/usr/bin/mt])
WHICHCMD_SPACESAFE([MT])
SET_FULL_PATH_SPACESAFE([MT])
# The resource compiler
AC_CHECK_PROG([RC], [rc], [rc],,, [/usr/bin/rc])
WHICHCMD_SPACESAFE([RC])
SET_FULL_PATH_SPACESAFE([RC])
RC_FLAGS="-nologo /l 0x409 /r"
AS_IF([test "x$VARIANT" = xOPT], [
@@ -354,12 +333,12 @@ AS_IF([test "x$OPENJDK_BUILD_OS" = xwindows], [
# lib.exe is used to create static libraries.
AC_CHECK_PROG([WINAR], [lib],[lib],,,)
WHICHCMD_SPACESAFE([WINAR])
SET_FULL_PATH_SPACESAFE([WINAR])
AR="$WINAR"
ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT"
AC_CHECK_PROG([DUMPBIN], [dumpbin], [dumpbin],,,)
WHICHCMD_SPACESAFE([DUMPBIN])
SET_FULL_PATH_SPACESAFE([DUMPBIN])
COMPILER_TYPE=CL
CCXXFLAGS="$CCXXFLAGS -nologo"
@@ -368,10 +347,20 @@ AC_SUBST(RC_FLAGS)
AC_SUBST(COMPILER_TYPE)
AC_PROG_CPP
WHICHCMD(CPP)
SET_FULL_PATH(CPP)
AC_PROG_CXXCPP
WHICHCMD(CXXCPP)
SET_FULL_PATH(CXXCPP)
if test "x$COMPILE_TYPE" != "xcross"; then
# If we are not cross compiling, use the same compilers for
# building the build platform executables. The cross-compilation
# case needed to be done earlier, but this can only be done after
# the native tools have been localized.
BUILD_CC="$CC"
BUILD_CXX="$CXX"
BUILD_LD="$LD"
fi
# for solaris we really need solaris tools, and not gnu equivalent
# these seems to normally reside in /usr/ccs/bin so add that to path before
@@ -386,27 +375,24 @@ fi
# Find the right assembler.
if test "x$OPENJDK_BUILD_OS" = xsolaris; then
AC_PATH_PROG(AS, as)
WHICHCMD(AS)
ASFLAGS=" "
SET_FULL_PATH(AS)
else
AS="$CC -c"
ASFLAGS=" "
fi
AC_SUBST(AS)
AC_SUBST(ASFLAGS)
if test "x$OPENJDK_BUILD_OS" = xsolaris; then
AC_PATH_PROG(NM, nm)
WHICHCMD(NM)
AC_PATH_PROGS(NM, [gnm nm])
SET_FULL_PATH(NM)
AC_PATH_PROG(STRIP, strip)
WHICHCMD(STRIP)
SET_FULL_PATH(STRIP)
AC_PATH_PROG(MCS, mcs)
WHICHCMD(MCS)
else
SET_FULL_PATH(MCS)
elif test "x$OPENJDK_BUILD_OS" != xwindows; then
AC_CHECK_TOOL(NM, nm)
WHICHCMD(NM)
SET_FULL_PATH(NM)
AC_CHECK_TOOL(STRIP, strip)
WHICHCMD(STRIP)
SET_FULL_PATH(STRIP)
fi
###
@@ -421,6 +407,11 @@ if test "x$OBJCOPY" = x; then
AC_PATH_TOOL(OBJCOPY, objcopy)
fi
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
AC_PATH_PROG(LIPO, lipo)
SET_FULL_PATH(LIPO)
fi
# Restore old path without tools dir
PATH="$OLD_PATH"
])
@@ -449,15 +440,13 @@ if test "x$GCC" = xyes; then
SET_SHARED_LIBRARY_MAPFILE='-Xlinker -version-script=[$]1'
C_FLAG_REORDER=''
CXX_FLAG_REORDER=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$$$ORIGIN/[$]1'
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$$$ORIGIN[$]1'
SET_EXECUTABLE_ORIGIN='-Xlinker -rpath -Xlinker \$$$$ORIGIN[$]1'
LD="$CC"
LDEXE="$CC"
LDCXX="$CXX"
LDEXECXX="$CXX"
POST_STRIP_CMD="$STRIP -g"
if test "x$JDK_VARIANT" = xembedded; then
POST_STRIP_CMD="$STRIP --strip-unneeded"
fi
# Linking is different on MacOSX
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
@@ -470,6 +459,7 @@ if test "x$GCC" = xyes; then
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/[$]1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
POST_STRIP_CMD="$STRIP -S"
fi
else
@@ -480,7 +470,7 @@ else
LIBRARY_PREFIX=lib
SHARED_LIBRARY='lib[$]1.so'
STATIC_LIBRARY='lib[$]1.a'
SHARED_LIBRARY_FLAGS="-z defs -xildoff -ztext -G"
SHARED_LIBRARY_FLAGS="-G"
SHARED_LIBRARY_SUFFIX='.so'
STATIC_LIBRARY_SUFFIX='.a'
OBJ_SUFFIX='.o'
@@ -489,7 +479,8 @@ else
SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
C_FLAG_REORDER='-xF'
CXX_FLAG_REORDER='-xF'
SET_SHARED_LIBRARY_ORIGIN='-R \$$$$ORIGIN/[$]1'
SET_SHARED_LIBRARY_ORIGIN='-R\$$$$ORIGIN[$]1'
SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
CFLAGS_JDKLIB_EXTRA='-xstrconst'
@@ -511,6 +502,7 @@ else
SET_SHARED_LIBRARY_NAME=''
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN=''
SET_EXECUTABLE_ORIGIN=''
fi
fi
@@ -527,6 +519,7 @@ AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
AC_SUBST(C_FLAG_REORDER)
AC_SUBST(CXX_FLAG_REORDER)
AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
AC_SUBST(SET_EXECUTABLE_ORIGIN)
AC_SUBST(POST_STRIP_CMD)
AC_SUBST(POST_MCS_CMD)
@@ -542,6 +535,25 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION],
# Setup the opt flags for different compilers
# and different operating systems.
#
#
# NOTE: check for -mstackrealign needs to be below potential addition of -m32
#
if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
# On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
# While waiting for a better solution, the current workaround is to use -mstackrealign.
CFLAGS="$CFLAGS -mstackrealign"
AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
[
AC_MSG_RESULT([yes])
],
[
AC_MSG_RESULT([no])
AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
])
fi
C_FLAG_DEPS="-MMD -MF"
CXX_FLAG_DEPS="-MMD -MF"
@@ -566,7 +578,7 @@ case $COMPILER_TYPE in
CXXFLAGS_DEBUG_SYMBOLS="-g"
if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then
CFLAGS_DEBUG_SYMBOLS="-g1"
CXXFLAGS_DEBUG_SYMBOLSG="-g1"
CXXFLAGS_DEBUG_SYMBOLS="-g1"
fi
;;
esac
@@ -578,52 +590,56 @@ case $COMPILER_TYPE in
#
# Forte has different names for this with their C++ compiler...
#
C_FLAG_DEPS="-xMMD -xMF"
CXX_FLAG_DEPS="-xMMD -xMF"
C_FLAG_DEPS="-xMMD -xMF"
CXX_FLAG_DEPS="-xMMD -xMF"
# Extra options used with HIGHEST
#
# WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
# done with care, there are some assumptions below that need to
# be understood about the use of pointers, and IEEE behavior.
#
# Use non-standard floating point mode (not IEEE 754)
CC_HIGHEST="$CC_HIGHEST -fns"
# Do some simplification of floating point arithmetic (not IEEE 754)
CC_HIGHEST="$CC_HIGHEST -fsimple"
# Use single precision floating point with 'float'
CC_HIGHEST="$CC_HIGHEST -fsingle"
# Assume memory references via basic pointer types do not alias
# (Source with excessing pointer casting and data access with mixed
# pointer types are not recommended)
CC_HIGHEST="$CC_HIGHEST -xalias_level=basic"
# Use intrinsic or inline versions for math/std functions
# (If you expect perfect errno behavior, do not use this)
CC_HIGHEST="$CC_HIGHEST -xbuiltin=%all"
# Loop data dependency optimizations (need -xO3 or higher)
CC_HIGHEST="$CC_HIGHEST -xdepend"
# Pointer parameters to functions do not overlap
# (Similar to -xalias_level=basic usage, but less obvious sometimes.
# If you pass in multiple pointers to the same data, do not use this)
CC_HIGHEST="$CC_HIGHEST -xrestrict"
# Inline some library routines
# (If you expect perfect errno behavior, do not use this)
CC_HIGHEST="$CC_HIGHEST -xlibmil"
# Use optimized math routines
# (If you expect perfect errno behavior, do not use this)
# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
#CC_HIGHEST="$CC_HIGHEST -xlibmopt"
# Extra options used with HIGHEST
#
# WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
# done with care, there are some assumptions below that need to
# be understood about the use of pointers, and IEEE behavior.
#
# Use non-standard floating point mode (not IEEE 754)
CC_HIGHEST="$CC_HIGHEST -fns"
# Do some simplification of floating point arithmetic (not IEEE 754)
CC_HIGHEST="$CC_HIGHEST -fsimple"
# Use single precision floating point with 'float'
CC_HIGHEST="$CC_HIGHEST -fsingle"
# Assume memory references via basic pointer types do not alias
# (Source with excessing pointer casting and data access with mixed
# pointer types are not recommended)
CC_HIGHEST="$CC_HIGHEST -xalias_level=basic"
# Use intrinsic or inline versions for math/std functions
# (If you expect perfect errno behavior, do not use this)
CC_HIGHEST="$CC_HIGHEST -xbuiltin=%all"
# Loop data dependency optimizations (need -xO3 or higher)
CC_HIGHEST="$CC_HIGHEST -xdepend"
# Pointer parameters to functions do not overlap
# (Similar to -xalias_level=basic usage, but less obvious sometimes.
# If you pass in multiple pointers to the same data, do not use this)
CC_HIGHEST="$CC_HIGHEST -xrestrict"
# Inline some library routines
# (If you expect perfect errno behavior, do not use this)
CC_HIGHEST="$CC_HIGHEST -xlibmil"
# Use optimized math routines
# (If you expect perfect errno behavior, do not use this)
# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
#CC_HIGHEST="$CC_HIGHEST -xlibmopt"
case $LEGACY_OPENJDK_TARGET_CPU1 in
i586)
C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xchip=pentium"
C_O_FLAG_HI="-xO4 -Wu,-O4~yz"
C_O_FLAG_NORM="-xO2 -Wu,-O2~yz"
C_O_FLAG_NONE=""
CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xchip=pentium"
CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz"
CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz"
CXX_O_FLAG_NONE=""
case $OPENJDK_TARGET_CPU_ARCH in
x86)
C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xregs=no%frameptr"
C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
C_O_FLAG_NONE="-xregs=no%frameptr"
CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
CXX_O_FLAG_NONE="-xregs=no%frameptr"
if test "x$OPENJDK_TARGET_CPU" = xx86; then
C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
fi
;;
sparc)
CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
@@ -647,9 +663,11 @@ CC_HIGHEST="$CC_HIGHEST -xlibmil"
;;
CL )
D_FLAG=
C_O_FLAG_HI="-O2"
C_O_FLAG_HIGHEST="-O2"
C_O_FLAG_HI="-O1"
C_O_FLAG_NORM="-O1"
C_O_FLAG_NONE="-Od"
CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST"
CXX_O_FLAG_HI="$C_O_FLAG_HI"
CXX_O_FLAG_NORM="$C_O_FLAG_NORM"
CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
@@ -680,15 +698,15 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_COMPILER_FLAGS_FOR_JDK],
[
if test "x$CFLAGS" != "x${ADDED_CFLAGS}"; then
AC_MSG_WARN([Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags"])
AC_MSG_WARN([Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags])
fi
if test "x$CXXFLAGS" != "x${ADDED_CXXFLAGS}"; then
AC_MSG_WARN([Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags"])
AC_MSG_WARN([Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags])
fi
if test "x$LDFLAGS" != "x${ADDED_LDFLAGS}"; then
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
AC_ARG_WITH(extra-cflags, [AS_HELP_STRING([--with-extra-cflags],
@@ -704,6 +722,15 @@ CFLAGS_JDK="${CFLAGS_JDK} $with_extra_cflags"
CXXFLAGS_JDK="${CXXFLAGS_JDK} $with_extra_cxxflags"
LDFLAGS_JDK="${LDFLAGS_JDK} $with_extra_ldflags"
# Hotspot needs these set in their legacy form
LEGACY_EXTRA_CFLAGS=$with_extra_cflags
LEGACY_EXTRA_CXXFLAGS=$with_extra_cxxflags
LEGACY_EXTRA_LDFLAGS=$with_extra_ldflags
AC_SUBST(LEGACY_EXTRA_CFLAGS)
AC_SUBST(LEGACY_EXTRA_CXXFLAGS)
AC_SUBST(LEGACY_EXTRA_LDFLAGS)
###############################################################################
#
# Now setup the CFLAGS and LDFLAGS for the JDK build.
@@ -729,43 +756,36 @@ case $COMPILER_NAME in
esac
;;
ossc )
CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -norunpath -xnolib"
CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX"
CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
case $OPENJDK_TARGET_CPU_ARCH in
x86 )
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -Di386"
CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
;;
esac
CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
;;
cl )
CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
-DWIN32 -DIAL"
case $LEGACY_OPENJDK_TARGET_CPU1 in
i?86 )
case $OPENJDK_TARGET_CPU in
x86 )
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86"
;;
amd64 )
x86_64 )
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64"
;;
esac
;;
esac
###############################################################################
#
# Cross-compile arch specific flags
#
if test "x$JDK_VARIANT" = "xembedded"; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DJAVASE_EMBEDDED"
fi
case $OPENJDK_TARGET_CPU_ARCH in
arm )
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fsigned-char"
;;
ppc )
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fsigned-char"
;;
esac
###############################################################################
CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
@@ -774,11 +794,17 @@ CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
PACKAGE_PATH=/opt/local
AC_SUBST(PACKAGE_PATH)
# Sometimes we use a cpu dir (.../lib/amd64/server)
# Sometimes not (.../lib/server)
LIBARCHDIR="$LEGACY_OPENJDK_TARGET_CPU2/"
if test "x$ENDIAN" = xlittle; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
# The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
# Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
# (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
# Note: -Dmacro is the same as #define macro 1
# -Dmacro= is the same as #define macro
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
else
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
fi
else
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
fi
@@ -793,27 +819,29 @@ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
fi
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE"
LIBARCHDIR=""
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"
fi
if test "x$DEBUG_LEVEL" = xrelease; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG"
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED"
fi
else
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG"
fi
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$LEGACY_OPENJDK_TARGET_CPU1\"' -D$LEGACY_OPENJDK_TARGET_CPU1"
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"$RELEASE\"'"
CCXXFLAGS_JDK="$CCXXFLAGS_JDK \
-I${JDK_OUTPUTDIR}/include \
-I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \
-I${JDK_TOPDIR}/src/share/javavm/export \
-I${JDK_TOPDIR}/src/$LEGACY_OPENJDK_TARGET_OS_API/javavm/export \
-I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/javavm/export \
-I${JDK_TOPDIR}/src/share/native/common \
-I${JDK_TOPDIR}/src/$LEGACY_OPENJDK_TARGET_OS_API/native/common"
-I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common"
# The shared libraries are compiled using the picflag.
CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
@@ -833,7 +861,7 @@ CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK"
# Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
if test "x$COMPILER_TYPE" = xCL; then
LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
if test "x$LEGACY_OPENJDK_TARGET_CPU1" = xi586; then
if test "x$OPENJDK_TARGET_CPU" = xx86; then
LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
fi
# TODO: make -debug optional "--disable-full-debug-symbols"
@@ -861,20 +889,18 @@ else
fi
LDFLAGS_JDKLIB="${LDFLAGS_JDK} $SHARED_LIBRARY_FLAGS \
-L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}server \
-L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}client \
-L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}"
LDFLAGS_JDKLIB_SUFFIX="-ljvm -ljava"
-L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/server \
-L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/client \
-L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}"
LDFLAGS_JDKLIB_SUFFIX="-ljava -ljvm"
if test "x$COMPILER_NAME" = xossc; then
LDFLAGS_JDKLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX -lc"
fi
# Only the jli library is explicitly linked when the launchers are built.
# The libjvm is then dynamically loaded/linked by the launcher.
LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then
LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}jli"
LDFLAGS_JDKEXE_SUFFIX="-ljli"
if test "x$OPENJDK_TARGET_OS" = xlinux; then
LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Xlinker --allow-shlib-undefined"
fi
fi
@@ -905,4 +931,5 @@ AC_SUBST(LDFLAGS_JDKLIB)
AC_SUBST(LDFLAGS_JDKEXE)
AC_SUBST(LDFLAGS_JDKLIB_SUFFIX)
AC_SUBST(LDFLAGS_JDKEXE_SUFFIX)
AC_SUBST(LDFLAGS_CXX_JDK)
])

77
common/bin/boot_cycle.sh Normal file
View File

@@ -0,0 +1,77 @@
#!/bin/bash
#
# Copyright (c) 2012, 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.
#
# 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.
#
# The boot_cycle.sh script performs two complete image builds (no javadoc though....)
# where the second build uses the first build as the boot jdk.
#
# This is useful to verify that the build is self hoisting and assists
# in flushing out bugs. You can follow up with compare_objects.sh to check
# that the two boot_cycle_?/images/j2sdk are identical. They should be.
#
# Usage:
# Specify the configure arguments to boot_cycle.sh, for example:
#
# sh common/bin/boot_cycle.sh --enable-debug --with-jvm-variants=server
#
# The same arguments will be used for both builds, except of course --with-boot-jdk
# that will be adjusted to boot_cycle_1 for the second build.
SCRIPT_DIR=`pwd`/`dirname $0`
ROOT_DIR=`(cd $SCRIPT_DIR/../.. ; pwd)`
BUILD_DIR=$ROOT_DIR/build
mkdir -p $BUILD_DIR
AUTOCONF_DIR=`(cd $SCRIPT_DIR/../autoconf ; pwd)`
BOOT_CYCLE_1_DIR=$BUILD_DIR/boot_cycle_1
BOOT_CYCLE_2_DIR=$BUILD_DIR/boot_cycle_2
# Create the boot cycle dirs in the build directory.
mkdir -p $BOOT_CYCLE_1_DIR
mkdir -p $BOOT_CYCLE_2_DIR
cd $BOOT_CYCLE_1_DIR
# Configure!
sh $AUTOCONF_DIR/configure "$@"
# Now build!
make images
if ! test -x $BOOT_CYCLE_1_DIR/images/j2sdk-image/bin/java ; then
echo Failed to build the executable $BOOT_CYCLE_1_DIR/images/j2sdk-image/bin/java
exit 1
fi
cd $BOOT_CYCLE_2_DIR
# Pickup the configure arguments, but drop any --with-boot-jdk=....
# and add the correct --with-boot-jdk=...boot_cycle_1... at the end.
ARGUMENTS="`cat $BOOT_CYCLE_1_DIR/configure-arguments|sed 's/--with-boot-jdk=[^ ]*//'` --with-boot-jdk=$BOOT_CYCLE_1_DIR/images/j2sdk-image"
# Configure using these adjusted arguments.
sh $AUTOCONF_DIR/configure $ARGUMENTS
# Now build!
make images
if ! test -x $BOOT_CYCLE_2_DIR/images/j2sdk-image/bin/java ; then
echo Failed to build the final executable $BOOT_CYCLE_2_DIR/images/j2sdk-image/bin/java
exit 1
fi

View File

@@ -30,7 +30,7 @@
#
if [ "x$1" = "x-h" ] || [ "x$1" = "x--help" ] || [ "x$1" == "x" ]; then
echo "bash ./common/bin/compare-build.sh old_jdk_build_dir new_jdk_build_dir"
echo "bash ./common/bin/compare-objects.sh old_jdk_build_dir new_jdk_build_dir <pattern>"
echo ""
echo "Compare object files"
echo ""

184
common/bin/test_builds.sh Normal file
View File

@@ -0,0 +1,184 @@
#!/bin/bash
set -x
set -e
options="$*"
option="$1"
tmp=/tmp/test_builds.$$
rm -f -r ${tmp}
mkdir -p ${tmp}
errMessages=${tmp}/error_messages.txt
#######
# Error function
error() # message
{
echo "ERROR: $1" | tee -a ${errMessages}
}
# Check errors
checkErrors()
{
if [ -s ${errMessages} ] ; then
cat ${errMessages}
exit 1
fi
}
#######
os="`uname -s`"
arch="`uname -p`"
make=make
if [ "${os}" = "SunOS" ] ; then
make=gmake
export J7="/opt/java/jdk1.7.0"
elif [ "${os}" = "Darwin" ] ; then
export J7="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home"
elif [ "${os}" = "Linux" -a "${arch}" = "x86_64" ] ; then
export J7="/usr/lib/jvm/java-7-openjdk-amd64/"
else
echo "What os/arch is this: ${os}/${arch}"
exit 1
fi
# Must have a jdk7
if [ ! -d ${J7} ] ; then
echo "No JDK7 found at: ${J7}"
exit 1
fi
# What sources we use
fromroot="http://hg.openjdk.java.net/build-infra/jdk8"
# Where we do it
root="testbuilds"
mkdir -p ${root}
# Three areas, last three are cloned from first to insure sameness
t0=${root}/t0
t1=${root}/t1
t2=${root}/t2
t3=${root}/t3
repolist="${t0} ${t1} ${t2} ${t3}"
# Optional complete clobber
if [ "${option}" = "clobber" ] ; then
for i in ${repolist} ; do
rm -f -r ${i}
done
fi
# Get top repos
if [ ! -d ${t0}/.hg ] ; then
rm -f -r ${t0}
hg clone ${fromroot} ${t0}
fi
for i in ${t1} ${t2} ${t3} ; do
if [ ! -d ${i}/.hg ] ; then
hg clone ${t0} ${i}
fi
done
# Get repos updated
for i in ${repolist} ; do
( \
set -e \
&& cd ${i} \
&& sh ./get_source.sh \
|| error "Cannot get source" \
) 2>&1 | tee ${i}.get_source.txt
checkErrors
done
# Optional clean
if [ "${option}" = "clean" ] ; then
for i in ${repolist} ; do
rm -f -r ${i}/build
rm -f -r ${i}/*/build
rm -f -r ${i}/*/dist
done
fi
# Check changes on working set files
for i in ${repolist} ; do
( \
set -e \
&& cd ${i} \
&& sh ./make/scripts/hgforest.sh status \
|| error "Cannot check status" \
) 2>&1 | tee ${i}.hg.status.txt
checkErrors
done
# Configure for build-infra building
for i in ${t1} ${t2} ; do
( \
set -e \
&& cd ${i}/common/makefiles \
&& sh ../autoconf/configure --with-boot-jdk=${J7} \
|| error "Cannot configure" \
) 2>&1 | tee ${i}.config.txt
checkErrors
done
# Do build-infra builds
for i in ${t1} ${t2} ; do
( \
set -e \
&& cd ${i}/common/makefiles \
&& ${make} \
FULL_VERSION:=1.8.0-internal-b00 \
JRE_RELEASE_VERSION:=1.8.0-internal-b00 \
USER_RELEASE_SUFFIX:=compare \
RELEASE:=1.8.0-internal \
VERBOSE= \
LIBARCH= \
all images \
|| error "Cannot build" \
) 2>&1 | tee ${i}.build.txt
checkErrors
done
# Compare build-infra builds
( \
sh ${t0}/common/bin/compareimage.sh \
${t1}/build/*/images/j2sdk-image \
${t2}/build/*/images/j2sdk-image \
|| error "Cannot compare" \
) 2>&1 | tee ${root}/build-infra-comparison.txt
checkErrors
# Do old build
unset JAVA_HOME
export ALT_BOOTDIR="${J7}"
( \
cd ${t3} \
&& ${make} FULL_VERSION='"1.8.0-internal" sanity \
|| error "Cannot sanity" \
) 2>&1 | tee ${t3}.sanity.txt
checkErrors
( \
cd ${t3} \
&& ${make} \
FULL_VERSION='"1.8.0-internal" \
JRE_RELEASE_VERSION:=1.8.0-internal-b00 \
USER_RELEASE_SUFFIX:=compare \
RELEASE:=1.8.0-internal \
|| error "Cannot build old way" \
) 2>&1 | tee ${t3}.build.txt
checkErrors
# Compare old build to build-infra build
( \
sh ${t0}/common/bin/compareimage.sh \
${t3}/build/*/j2sdk-image \
${t1}/build/*/images/j2sdk-image \
|| error "Cannot compare" \
) 2>&1 | tee ${root}/build-comparison.txt
checkErrors
exit 0

100
common/bin/unicode2x.sed Normal file
View File

@@ -0,0 +1,100 @@
s/\\u0020/\x20/g
s/\\u003A/\x3A/g
s/\\u006B/\x6B/g
s/\\u0075/\x75/g
s/\\u00A0/\xA0/g
s/\\u00A3/\xA3/g
s/\\u00B0/\xB0/g
s/\\u00B7/\xB7/g
s/\\u00BA/\xBA/g
s/\\u00BF/\xBF/g
s/\\u00C0/\xC0/g
s/\\u00C1/\xC1/g
s/\\u00C2/\xC2/g
s/\\u00C4/\xC4/g
s/\\u00C5/\xC5/g
s/\\u00C8/\xC8/g
s/\\u00C9/\xC9/g
s/\\u00CA/\xCA/g
s/\\u00CD/\xCD/g
s/\\u00CE/\xCE/g
s/\\u00D3/\xD3/g
s/\\u00D4/\xD4/g
s/\\u00D6/\xD6/g
s/\\u00DA/\xDA/g
s/\\u00DC/\xDC/g
s/\\u00DD/\xDD/g
s/\\u00DF/\xDF/g
s/\\u00E0/\xE0/g
s/\\u00E1/\xE1/g
s/\\u00E2/\xE2/g
s/\\u00E3/\xE3/g
s/\\u00E4/\xE4/g
s/\\u00E5/\xE5/g
s/\\u00E6/\xE6/g
s/\\u00E7/\xE7/g
s/\\u00E8/\xE8/g
s/\\u00E9/\xE9/g
s/\\u00EA/\xEA/g
s/\\u00EB/\xEB/g
s/\\u00EC/\xEC/g
s/\\u00ED/\xED/g
s/\\u00EE/\xEE/g
s/\\u00EF/\xEF/g
s/\\u00F1/\xF1/g
s/\\u00F2/\xF2/g
s/\\u00F3/\xF3/g
s/\\u00F4/\xF4/g
s/\\u00F5/\xF5/g
s/\\u00F6/\xF6/g
s/\\u00F9/\xF9/g
s/\\u00FA/\xFA/g
s/\\u00FC/\xFC/g
s/\\u0020/\x20/g
s/\\u003f/\x3f/g
s/\\u006f/\x6f/g
s/\\u0075/\x75/g
s/\\u00a0/\xa0/g
s/\\u00a3/\xa3/g
s/\\u00b0/\xb0/g
s/\\u00ba/\xba/g
s/\\u00bf/\xbf/g
s/\\u00c1/\xc1/g
s/\\u00c4/\xc4/g
s/\\u00c5/\xc5/g
s/\\u00c8/\xc8/g
s/\\u00c9/\xc9/g
s/\\u00ca/\xca/g
s/\\u00cd/\xcd/g
s/\\u00d6/\xd6/g
s/\\u00dc/\xdc/g
s/\\u00dd/\xdd/g
s/\\u00df/\xdf/g
s/\\u00e0/\xe0/g
s/\\u00e1/\xe1/g
s/\\u00e2/\xe2/g
s/\\u00e3/\xe3/g
s/\\u00e4/\xe4/g
s/\\u00e5/\xe5/g
s/\\u00e7/\xe7/g
s/\\u00e8/\xe8/g
s/\\u00e9/\xe9/g
s/\\u00ea/\xea/g
s/\\u00eb/\xeb/g
s/\\u00ec/\xec/g
s/\\u00ed/\xed/g
s/\\u00ee/\xee/g
s/\\u00ef/\xef/g
s/\\u00f0/\xf0/g
s/\\u00f1/\xf1/g
s/\\u00f2/\xf2/g
s/\\u00f3/\xf3/g
s/\\u00f4/\xf4/g
s/\\u00f5/\xf5/g
s/\\u00f6/\xf6/g
s/\\u00f7/\xf7/g
s/\\u00f8/\xf8/g
s/\\u00f9/\xf9/g
s/\\u00fa/\xfa/g
s/\\u00fc/\xfc/g
s/\\u00ff/\xff/g

View File

@@ -0,0 +1,49 @@
#
# Copyright (c) 2011, 2012, 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.
#
# Include the legacy hotspot-spec.gmk (which in turns includes spec.gmk)
BASE_SPEC:=$(SPEC)
include $(dir $(SPEC))hotspot-spec.gmk
include MakeBase.gmk
# Inclusion of this pseudo-target will cause make to execute this file
# serially, regardless of -j. Recursively called makefiles will not be
# affected, however. This is required for correct dependency management.
.NOTPARALLEL:
default: all
# Get all files except .hg in the hotspot directory.
HOTSPOT_FILES := $(shell $(FIND) $(HOTSPOT_TOPDIR) -name ".hg" -prune -o -print)
$(HOTSPOT_OUTPUTDIR)/_hotspot.timestamp: $(HOTSPOT_FILES)
@($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) SPEC=$(HOTSPOT_SPEC) BASE_SPEC=$(BASE_SPEC))
$(TOUCH) $@
hotspot: $(HOTSPOT_OUTPUTDIR)/_hotspot.timestamp
all: hotspot
.PHONY: default all hotspot

View File

@@ -23,40 +23,14 @@
# questions.
#
# The complexity of this makefile is not the fault of make, but the fault
# of javac and javah. The basic problems are:
#
# 1) Compiling a single Java source file unpredictably generates anything
# between zero (0!) and an infinite number of .class files!
# 2) There is no hint, for which classes javah needs to be run,
# and it happily generates .h files for classes with no native methods.
# 3) javac and javah do not cleanup anything, for example if an internal
# class (potentially with native methods) is removed from a Java source file.
#
# This makefile is a tribute to GNU make. And yes, it was harder to write than it is
# to read. The include/excludes of directories and files are only a temporary measure
# to work around the messy jdk sources that put platform specific code in src/share/classes.
#
# We should move most of the functionality of this makefile into a
# smart javac/javah/javadoc/jar combo tool. sjavac ?
#
# I.e. 1) It always generates a single output, a zip-file from a number of source roots.
# The zip file contains information that enable incremental builds with full
# dependency tracking between packages.
# 2) It automatically generates the right .h files.
# 3) It keeps its house clean.
# *) Generates intermediate files to be used for javadoc generation later.
# and does all the other useful things that this makefile does, such as:
# use all cores for compilation, reuse the running JVM for all compilations,
# and has pubapi dependency tracking to minimize the number of files
# that need to be recompiled during an incremental build.
#
# A zip file, or several zip files combined, can then be converted to a .jar file, or to a .jmod file.
#
# This would make this makefile much much simpler. I.e. make can be used
# for its real purpose, track dependencies and trigger a recompile if a
# dependency has changed.
#
# This makefile is much simpler now that it can use the smart javac wrapper
# for dependency tracking between java packages and incremental compiles.
# It could be even more simple if we added support for incremental jar updates
# directly from the smart javac wrapper.
# Cleaning/copying properties here is not a good solution. The properties
# should be cleaned/copied by a annotation processor in sjavac.
# When you read this source. Remember that $(sort ...) has the side effect
# of removing duplicates. It is actually this side effect that is
# desired whenever sort is used below!
@@ -67,25 +41,15 @@ endif
FALSE_FIND_PATTERN:=-name FILE_NAME_THAT_DOESNT_EXIST
# If compilation of java package fails, then the public api file for that
# package will not be genereated. We add this fallback rule to generate
# an empty pubapi file.
%.api:
if test ! -f $@; then $(MKDIR) -p $(@D); $(TOUCH) $@; fi
define SetupJavaCompiler
# param 1 is for example BOOT_JAVAC or NEW_JAVAC
# This is the name later used to decide which java compiler to use.
# param 2-9 are named args.
# JVM:=The jvm used to run the javac/javah command
# JAVAC:=The javac jar and bootstrap classpath changes, or just bin/javac if JVM is left out
# JAVAH:=The javah jar and bootstrap classpath changes, or just bin/javah if JVM is left out
# FLAGS:=Flags to be supplied to javac
# MODE:=SINGLE_THREADED_BATCH (primarily for old javac) or MULTI_CORE_CONCURRENT
# only for MULTI_CORE_CONCURRENT are the options below relevant:
# SERVER_DIR:=Use a javac server (-XDserver) and store the server related files here
# SERVER_JVM:=Use this JVM for the server. Defaults to the JVM above.
# USE_DEPS:=true means use -XDdeps,-XDpubapi and -XDnativeapi to track java dependencies
$(if $2,$1_$(strip $2))
$(if $3,$1_$(strip $3))
$(if $4,$1_$(strip $4))
@@ -96,21 +60,17 @@ define SetupJavaCompiler
$(if $9,$1_$(strip $9))
$(if $(10),$(error Internal makefile error: Too many arguments to SetupJavaCompiler, please update JavaCompilation.gmk))
ifeq ($$($1_MODE),MULTI_CORE_CONCURRENT)
ifneq (,$$($1_SERVER_DIR))
# A javac server has been requested.
# The port file contains the tcp/ip on which the server listens
# and the cookie necessary to talk to the server.
$1_JAVAC_PORTFILE:=$$($1_SERVER_DIR)/$1.port
ifeq ($$($1_SERVER_JVM),)
# You can use a different JVM to run the background javac server.
# But if not set, it defaults to the same JVM that is used to start
# the javac command.
$1_SERVER_JVM:=$$($1_JVM)
endif
# Set the $1_REMOTE to spawn a background javac server.
$1_REMOTE:=-XDserver:portfile=$$($1_JAVAC_PORTFILE),poolsize=$(JAVAC_SERVER_CORES),javac=$$(subst $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_JAVAC))))
ifeq ($$(ENABLE_SJAVAC),yes)
# The port file contains the tcp/ip on which the server listens
# and the cookie necessary to talk to the server.
$1_JAVAC_PORTFILE:=$$($1_SERVER_DIR)/server.port
# You can use a different JVM to run the background javac server.
ifeq ($$($1_SERVER_JVM),)
# It defaults to the same JVM that is used to start the javac command.
$1_SERVER_JVM:=$$($1_JVM)
endif
# Set the $1_REMOTE to spawn a background javac server.
$1_REMOTE:=-XDserver:portfile=$$($1_JAVAC_PORTFILE),poolsize=$(SJAVAC_SERVER_CORES),id=$1,javac=$$(subst $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_JAVAC))))
endif
endef
@@ -127,7 +87,7 @@ define SetupArchive
# JAR:=Jar file to create
# MANIFEST:=Optional manifest file template.
# JARMAIN:=Optional main class to add to manifest
# JARINDEX :=
# JARINDEX:=true means generate the index in the jar file.
# SKIP_METAINF:=Set to prevent contents of an META-INF directory to be automatically
# added to the archive.
# EXTRA_MANIFEST_ATTR:=Extra attribute to add to manifest.
@@ -152,9 +112,6 @@ define SetupArchive
$1_MANIFEST_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_manifest
$1_DELETESS_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_deletess
$1_DELETES_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_deletes
$1_PUBAPI_NOTIFICATIONS_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_pubapi_notifications
$1_NATIVEAPI_NOTIFICATIONS_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_native_notifications
$1_NATIVEAPI_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_native
$1_BIN:=$$(dir $$($1_JAR))
ifeq (,$$($1_SUFFIXES))
@@ -180,6 +137,7 @@ define SetupArchive
$1_GREP_EXCLUDES:=| $(GREP) -v -f $$($1_BIN)/_the.$$($1_JARNAME)_exclude
endif
# Check if this jar needs to have its index generated.
ifneq (,$$($1_JARINDEX))
$1_JARINDEX = (cd $$(dir $$@) && $(JAR) -i $$(notdir $$@))
else
@@ -188,14 +146,17 @@ define SetupArchive
# When this macro is run in the same makefile as the java compilation, dependencies are transfered
# in make variables. When the macro is run in a different makefile than the java compilation, the
# dependencies need to be found in the filesystem.
$1_ALL_SRCS:=$$(foreach src,$$($1_SRCS),$$(shell ($(FIND) $$(src) -type f \
ifneq (,$2)
$1_DEPS:=$2
else
$1_DEPS:=$$(foreach src,$$($1_SRCS),$$(shell ($(FIND) $$(src) -type f \
-a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \
$$($1_GREP_EXCLUDES) && $(ECHO) $$($1_EXTRA_FILES))))
ifeq (,$$($1_SKIP_METAINF))
$1_ALL_SRCS+=$$(foreach src,$$($1_SRCS),$$(shell $(FIND) $$(src)/META-INF -type f 2> /dev/null))
$$($1_GREP_EXCLUDES) && $(ECHO) $$(addprefix $$(src)/,$$($1_EXTRA_FILES)))))
ifeq (,$$($1_SKIP_METAINF))
$1_DEPS+=$$(foreach src,$$($1_SRCS),$$(shell $(FIND) $$(src)/META-INF -type f 2> /dev/null))
endif
endif
# Utility macros, to make the shell script receipt somewhat easier to dechipher.
# The capture contents macro finds all files (matching the patterns, typically
@@ -208,19 +169,12 @@ define SetupArchive
# The capture deletes macro finds all deleted files and concatenates them. The resulting file
# tells us what to remove from the jar-file.
$1_CAPTURE_DELETES=$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.deleted -newer $$@ -exec $(SED) 's|$$(src)||g' \{\} >> $$($1_DELETES_FILE) \;) &&)
# The capture pubapi notifications scans for pubapi change notifications. If such notifications are
# found, then we will build the classes leading up to the jar again, to take into account the new timestamps
# on the changed pubapi files.
$1_CAPTURE_PUBAPI_NOTIFICATIONS=$$(foreach src,$$($1_SRCS),\
(cd $$(src) && \
$(FIND) . -name _the.package.api.notify -exec dirname \{\} \; >> $$($1_PUBAPI_NOTIFICATIONS_FILE) ; \
true) &&)
# The update contents macro updates the jar file with the previously capture contents.
$1_UPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\
(cd $$(src) && \
if [ -s _the.$$($1_JARNAME)_contents ]; then \
$(ECHO) " updating" `$(WC) -l _the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'` files && \
$(JAR) uf $$@ @_the.$$($1_JARNAME)_contents; \
$(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @_the.$$($1_JARNAME)_contents; \
fi) &&)
# The s-variants of the above macros are used when the jar is created from scratch.
$1_SCAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),\
@@ -234,30 +188,25 @@ define SetupArchive
$$(src)/_the.$$($1_JARNAME)_contents) && )
endif
$1_SUPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\
(cd $$(src) && $(JAR) uf $$@ @$$(src)/_the.$$($1_JARNAME)_contents) &&)
(cd $$(src) && $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$(src)/_the.$$($1_JARNAME)_contents) &&)
# The TOUCH macro is used to make sure all timestamps are identical for package files and the pubapi files.
# If we do not do this, we get random recompilations, the next time we run make, since the order of package building is random,
# ie independent of package --dependes on-> public api of another package. This is of course
# due to the fact that Java source often (always?) has circular dependencies. (Thus there is no correct order
# to compile packages, and we can just as well do them in a random order. Which we do.)
$1_TOUCH_API_FILES=$$(foreach src,$$($1_SRCS),\
($(FIND) $$(src) -name _the.package.api -exec $(TOUCH) -r $$($1_JAR) \{\} \; ; true) && \
($(FIND) $$(src) -name _the.package -exec $(TOUCH) -r $$($1_JAR) \{\} \; ; true) &&)
# Use a slightly shorter name for logging, but with enough path to identify this jar.
$1_NAME:=$$(subst $$(OUTPUT_ROOT)/,,$$($1_JAR))
ifneq (,$$($1_CHECK_COMPRESS_JAR))
$1_JAR_CREATE_OPTIONS := c0fm
$1_JAR_UPDATE_OPTIONS := u0f
ifeq ($(COMPRESS_JARS), true)
$1_JAR_CREATE_OPTIONS := cfm
$1_JAR_UPDATE_OPTIONS := uf
endif
else
$1_JAR_CREATE_OPTIONS := cfm
$1_JAR_UPDATE_OPTIONS := uf
endif
# Here is the rule that creates/updates the jar file.
$$($1_JAR) : $2 $$($1_ALL_SRC)
$$($1_JAR) : $$($1_DEPS)
$(MKDIR) -p $$($1_BIN)
if [ -n "$$($1_MANIFEST)" ]; then \
$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
@@ -272,46 +221,28 @@ define SetupArchive
$(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE); \
fi
+if [ -s $$@ ]; then \
$(RM) -r $$($1_PUBAPI_NOTIFICATIONS_FILE) && \
$$($1_CAPTURE_PUBAPI_NOTIFICATIONS) \
if [ -s $$($1_PUBAPI_NOTIFICATIONS_FILE) ]; then \
$(ECHO) Public api change detected in: && \
$(CAT) $$($1_PUBAPI_NOTIFICATIONS_FILE) | $(TR) '/' '.' | $(SED) 's|^..||g' | $(SED) 's|\.$$$$||g' | $(AWK) '{print " "$$$$1}' && \
$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.api.notify $(FIND_DELETE); true) &&) \
$(MAKE) -f $(word 1,$(MAKEFILE_LIST)) $$($1_JAR) ; \
else \
$(ECHO) Modifying $$($1_NAME) && \
$$($1_CAPTURE_CONTENTS) \
$$($1_CAPTURE_METAINF) \
$(RM) $$($1_DELETES_FILE) && \
$$($1_CAPTURE_DELETES) \
$(CAT) $$($1_DELETES_FILE) > $$($1_DELETESS_FILE) && \
if [ -s $$($1_DELETESS_FILE) ]; then \
$(ECHO) " deleting" `$(WC) -l $$($1_DELETESS_FILE) | $(AWK) '{ print $$$$1 }'` files && \
$(ZIP) -q -d $$@ `$(CAT) $$($1_DELETESS_FILE)` ; \
fi && \
$$($1_UPDATE_CONTENTS) true && \
$$($1_JARINDEX) && \
$$($1_TOUCH_API_FILES) true && \
$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.api.notify $(FIND_DELETE); true) &&) true ; \
fi ; \
$(ECHO) Modifying $$($1_NAME) && \
$$($1_CAPTURE_CONTENTS) \
$$($1_CAPTURE_METAINF) \
$(RM) $$($1_DELETES_FILE) && \
$$($1_CAPTURE_DELETES) \
$(CAT) $$($1_DELETES_FILE) > $$($1_DELETESS_FILE) && \
if [ -s $$($1_DELETESS_FILE) ]; then \
$(ECHO) " deleting" `$(WC) -l $$($1_DELETESS_FILE) | $(AWK) '{ print $$$$1 }'` files && \
$(ZIP) -q -d $$@ `$(CAT) $$($1_DELETESS_FILE)` ; \
fi && \
$$($1_UPDATE_CONTENTS) true && \
$$($1_JARINDEX) && true ; \
else \
$(ECHO) Creating $$($1_NAME) && $(JAR) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) && \
$$($1_SCAPTURE_CONTENTS) \
$$($1_SCAPTURE_METAINF) \
$$($1_SUPDATE_CONTENTS) \
$$($1_JARINDEX) && \
$$($1_TOUCH_API_FILES) true && \
$(RM) -r $$($1_NATIVEAPI_NOTIFICATIONS_FILE) $$($1_NATIVEAPI_FILE) && \
$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name "*.notify" $(FIND_DELETE); true) &&) true ; \
$$($1_JARINDEX) && true ; \
fi;
endef
define append_to
$(ECHO) "$1" >> $2
endef
define SetupZipArchive
# param 1 is for example ZIP_MYSOURCE
# param 2,3,4,5,6,7,8,9 are named args.
@@ -343,7 +274,7 @@ define SetupZipArchive
ifneq ($$($1_EXCLUDES),)
$1_SRC_EXCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
$1_ZIP_EXCLUDES := $$(addprefix -x$(SPACE)$(DQUOTE),$$(addsuffix /*$(DQUOTE),$$($1_EXCLUDES)))
$1_ALL_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
$1_ALL_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRC))
endif
# Use a slightly shorter name for logging, but with enough path to identify this zip.
@@ -381,7 +312,8 @@ endef
# This macro is used only for properties files that are to be
# copied over to the classes directory in cleaned form:
# Previously this was inconsistently done in different repositories.
# This is the new clean standard.
# This is the new clean standard. Though it is to be superseded by
# a standard annotation processor from with sjavac.
define add_file_to_copy_and_clean
# param 1 = BUILD_MYPACKAGE
# parma 2 = The source file to copy and clean.
@@ -391,109 +323,8 @@ define add_file_to_copy_and_clean
# Now we can setup the depency that will trigger the copying.
$$($1_BIN)$$($2_TARGET) : $2
$(MKDIR) -p $$(@D)
$(ECHO) Cleaning $$($2_TARGET)
$(CAT) $$< | $(SED) -e 's/\([^\\]\):/\1\\:/g' -e 's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \
| $(SED) \
-e 's/\\u0020/\x20/g' \
-e 's/\\u003A/\x3A/g' \
-e 's/\\u006B/\x6B/g' \
-e 's/\\u0075/\x75/g' \
-e 's/\\u00A0/\xA0/g' \
-e 's/\\u00A3/\xA3/g' \
-e 's/\\u00B0/\xB0/g' \
-e 's/\\u00B7/\xB7/g' \
-e 's/\\u00BA/\xBA/g' \
-e 's/\\u00BF/\xBF/g' \
-e 's/\\u00C0/\xC0/g' \
-e 's/\\u00C1/\xC1/g' \
-e 's/\\u00C2/\xC2/g' \
-e 's/\\u00C4/\xC4/g' \
-e 's/\\u00C5/\xC5/g' \
-e 's/\\u00C8/\xC8/g' \
-e 's/\\u00C9/\xC9/g' \
-e 's/\\u00CA/\xCA/g' \
-e 's/\\u00CD/\xCD/g' \
-e 's/\\u00CE/\xCE/g' \
-e 's/\\u00D3/\xD3/g' \
-e 's/\\u00D4/\xD4/g' \
-e 's/\\u00D6/\xD6/g' \
-e 's/\\u00DA/\xDA/g' \
-e 's/\\u00DC/\xDC/g' \
-e 's/\\u00DD/\xDD/g' \
-e 's/\\u00DF/\xDF/g' \
-e 's/\\u00E0/\xE0/g' \
-e 's/\\u00E1/\xE1/g' \
-e 's/\\u00E2/\xE2/g' \
-e 's/\\u00E3/\xE3/g' \
-e 's/\\u00E4/\xE4/g' \
-e 's/\\u00E5/\xE5/g' \
-e 's/\\u00E6/\xE6/g' \
-e 's/\\u00E7/\xE7/g' \
-e 's/\\u00E8/\xE8/g' \
-e 's/\\u00E9/\xE9/g' \
-e 's/\\u00EA/\xEA/g' \
-e 's/\\u00EB/\xEB/g' \
-e 's/\\u00EC/\xEC/g' \
-e 's/\\u00ED/\xED/g' \
-e 's/\\u00EE/\xEE/g' \
-e 's/\\u00EF/\xEF/g' \
-e 's/\\u00F1/\xF1/g' \
-e 's/\\u00F2/\xF2/g' \
-e 's/\\u00F3/\xF3/g' \
-e 's/\\u00F4/\xF4/g' \
-e 's/\\u00F5/\xF5/g' \
-e 's/\\u00F6/\xF6/g' \
-e 's/\\u00F9/\xF9/g' \
-e 's/\\u00FA/\xFA/g' \
-e 's/\\u00FC/\xFC/g' \
-e 's/\\u0020/\x20/g' \
-e 's/\\u003f/\x3f/g' \
-e 's/\\u006f/\x6f/g' \
-e 's/\\u0075/\x75/g' \
-e 's/\\u00a0/\xa0/g' \
-e 's/\\u00a3/\xa3/g' \
-e 's/\\u00b0/\xb0/g' \
-e 's/\\u00ba/\xba/g' \
-e 's/\\u00bf/\xbf/g' \
-e 's/\\u00c1/\xc1/g' \
-e 's/\\u00c4/\xc4/g' \
-e 's/\\u00c5/\xc5/g' \
-e 's/\\u00c8/\xc8/g' \
-e 's/\\u00c9/\xc9/g' \
-e 's/\\u00ca/\xca/g' \
-e 's/\\u00cd/\xcd/g' \
-e 's/\\u00d6/\xd6/g' \
-e 's/\\u00dc/\xdc/g' \
-e 's/\\u00dd/\xdd/g' \
-e 's/\\u00df/\xdf/g' \
-e 's/\\u00e0/\xe0/g' \
-e 's/\\u00e1/\xe1/g' \
-e 's/\\u00e2/\xe2/g' \
-e 's/\\u00e3/\xe3/g' \
-e 's/\\u00e4/\xe4/g' \
-e 's/\\u00e5/\xe5/g' \
-e 's/\\u00e7/\xe7/g' \
-e 's/\\u00e8/\xe8/g' \
-e 's/\\u00e9/\xe9/g' \
-e 's/\\u00ea/\xea/g' \
-e 's/\\u00eb/\xeb/g' \
-e 's/\\u00ec/\xec/g' \
-e 's/\\u00ed/\xed/g' \
-e 's/\\u00ee/\xee/g' \
-e 's/\\u00ef/\xef/g' \
-e 's/\\u00f0/\xf0/g' \
-e 's/\\u00f1/\xf1/g' \
-e 's/\\u00f2/\xf2/g' \
-e 's/\\u00f3/\xf3/g' \
-e 's/\\u00f4/\xf4/g' \
-e 's/\\u00f5/\xf5/g' \
-e 's/\\u00f6/\xf6/g' \
-e 's/\\u00f7/\xf7/g' \
-e 's/\\u00f8/\xf8/g' \
-e 's/\\u00f9/\xf9/g' \
-e 's/\\u00fa/\xfa/g' \
-e 's/\\u00fc/\xfc/g' \
-e 's/\\u00ff/\xff/g' \
| $(SED) -f "$(SRC_ROOT)/common/bin/unicode2x.sed" \
| $(SED) -e '/^#/d' -e '/^$$$$/d' \
-e :a -e '/\\$$$$/N; s/\\\n//; ta' \
-e 's/^[ \t]*//;s/[ \t]*$$$$//' \
@@ -504,122 +335,6 @@ define add_file_to_copy_and_clean
$1_ALL_COPY_CLEAN_TARGETS += $$($1_BIN)$$($2_TARGET)
endef
define add_java_package
# param 1 = BUILD_MYPACKAGE
# param 2 = the package target file (_the.package)
# param 3 = src roots, all of them, separated with space
# param 4 = bin root
# param 5 = include these dependecies
# param 6 = not used
# param 7 = if non-empty, then use -Xdeps and -Xpubapi
# param 8 = xremote configuration, or empty.
# param 9 = javac command
# param 10 = javac flags
# param 11 = exclude these files!
# param 12 = only include these files!
# param 13 = javah command
# param 14 = override src roots to be passed into -sourcepath, ugly ugly ugly, do not use this!
# it is only here to workaround ugly things in the source code in the jdk that ought
# to be fixed instead!
ifdef $2_USED_BY
$$(error Attempting to add the package $2 from $3 which is already added with sources from $$($2_USED_BY))
endif
$2_USED_BY:=$3
# Remove the _the.package file to get the target bin dir for the classes in this package.
$2_PACKAGE_BDIR:=$(dir $2)
# The source roots separated with a path separator (: or ; depending on os)
# (The patsubst is necessary to trim away unnecessary spaces.)
ifneq ($(14),)
$2_SRCROOTSC:=$(subst $(SPACE),$(PATH_SEP),$(strip $(patsubst %,%,$(14))))
else
$2_SRCROOTSC:=$(subst $(SPACE),$(PATH_SEP),$(strip $(patsubst %,%,$3)))
endif
# Suffix the package path to the src roots, to get a list of all possible source locations
# for this package.
$2_PACKAGE_SDIRS:=$$(foreach i,$3,$$(subst $4,$$i,$$($2_PACKAGE_BDIR)))
# Use wildcard in all potential source locations to find the actual sources.
$2_PACKAGE_SRCS:=$$(filter-out $(11),$$(wildcard $$(addsuffix *.java,$$($2_PACKAGE_SDIRS))))
ifneq ($(12),)
# Filter on include file filter if set.
$2_PACKAGE_SRCS:=$$(filter $(12),$$($2_PACKAGE_SRCS))
endif
# Generate a proper package name from the file name.
$2_PACKAGE:=$(patsubst .%.,%,$(subst /,.,$(subst $4,,$(dir $2))))
# Use a javac server for this package?
$2_REMOTE:=$8
# Include previously generated information about what classes are output by this package
# and what sources were used for the compile.
-include $$($2_PACKAGE_BDIR)_the.package.d
# Include the notify, file, that exists if the package has been compiled during a previous make round.
# I.e. we are now dealing with a compile triggered by a pubapi change.
-include $$($2_PACKAGE_BDIR)_the.package.notify
# If the notify file existed, then $$($2_NOTIFIED) will be equal to true.
# Use this information to block dependency tracking for this package.
# This is necessary to cut the circular dependency chains that are so common in Java sources.
ifneq ($$($2_NOTIFIED),true)
# No need to block, since this package has not yet been recompiled.
# Thus include previously generated dependency information. (if it exists)
-include $$($2_PACKAGE_BDIR)_the.package.dddd
# else
# $$(info WAS NOTIFIED $2)
endif
# Should we create proper dependencies between packages?
ifneq ($7,)
# The flag: -XDpubapi:file=foo,package=mypack,notify writes a file foo that contains a
# database of the public api of the classes supplied on the command line and are
# inside the package mypack. If foo already exists, javac will only write to foo,
# if there is a change in the pubapi. I.e. we can use the timestamp of this file
# for triggering dependencies. "notify" means create a "file" suffixed with notify
# if the pubapi really changed.
$2_PUBAPI=-XDpubapi=file=$$($2_PACKAGE_BDIR)_the.package.api,notify,package=$$($2_PACKAGE)
# The flag: -XDnativeapi:file=foo,package=mypack,notify works similar to pubabi, but
# instead tracks native methods. This file can be used to trigger dependencies for
# native compilations.
$2_NATIVEAPI=-XDnativeapi=file=$$($2_PACKAGE_BDIR)_the.package.native,notify,package=$$($2_PACKAGE)
# The flag -XDdeps:file=foo.deps,groupon=package writes a foo.deps file containing packages dependencies:
# java.net : java.io java.lang
# I.e. the classes in .net depend on the public apis of java.io and java.lang
# The dependencies can be grouped on classes instead (groupon=class)
# java.net.Bar : java.io.Socket java.lang.String
$2_DEPS:=-XDdeps=file=$$($2_PACKAGE_BDIR)_the.package.deps,groupon=package
# The next command rewrites the deps output from javac into a proper makefile dependency.
# The dependencies are always to an .api file generated by the pubapi option above.
# This is necessary since java package dependencies are almost always circular.
$2_APPEND_DEPS:=($(CAT) $$($2_PACKAGE_BDIR)_the.package.deps | $(TR) '.' '/' | $(AWK) '{ print "$4/" $$$$3 }' | sort > $$($2_PACKAGE_BDIR)_the.package.ddd && $(GREP) -f $$($2_PACKAGE_BDIR)_the.package.ddd $5 | $(AWK) '{ print "$(dir $2)_the.package : " $$$$1 "_the.package.api" }' > $$($2_PACKAGE_BDIR)_the.package.dddd ; true)
else
# If not using dependencies, use $2 as fallback to trigger regeneration of javah header files.
# This will generate a surplus of header files, but this does not hurt compilation.
$2_NATIVEAPICHANGE_TRIGGER:=$2
$2_FETCH_NATIVEAPICHANGE_CLASSES:=$(CAT) $$($2_PACKAGE_BDIR)_the.package.now|$(GREP) -v '\$$$$'|$(SED) -e 's|$4/||g'|$(SED) 's|.class||g'| $(TR) '/' '.'
endif
# The _the.package file is dependent on the java files inside the package.
# Fill the _the.package file with a list of the java files and compile them
# to class files.
$2 : $$($2_PACKAGE_SRCS)
$(MKDIR) -p $$($2_PACKAGE_BDIR)
$(RM) $2.tmp
$$(call ListPathsSafely,$2_PACKAGE_SRCS,\n, >> $2.tmp)
$(ECHO) $$($2_PACKAGE_BDIR)*.class | $(GREP) -v \*.class | $(TR) ' ' '\n' > $$($2_PACKAGE_BDIR)_the.package.prev
$(RM) $$($2_PACKAGE_BDIR)*.class $$($2_PACKAGE_BDIR)*.notify $$($2_PACKAGE_BDIR)*.deleted
$(ECHO) Compiling `$(WC) $2.tmp | $(TR) -s ' ' | $(CUT) -f 2 -d ' '` files in package $(patsubst $4/%/,%,$(dir $2.tmp))
$9 $$($2_REMOTE) $$($2_DEPS) $$($2_PUBAPI) $$($2_NATIVEAPI) $(10) -implicit:none -sourcepath "$$($2_SRCROOTSC)" -d $4 @$2.tmp
$(ECHO) $$($2_PACKAGE_BDIR)*.class | $(GREP) -v \*.class | $(TR) ' ' '\n' > $$($2_PACKAGE_BDIR)_the.package.now
($(GREP) -xvf $$($2_PACKAGE_BDIR)_the.package.now $$($2_PACKAGE_BDIR)_the.package.prev > $$($2_PACKAGE_BDIR)_the.package.deleted;true)
$(ECHO) $1_CLASSES += `$(CAT) $$($2_PACKAGE_BDIR)_the.package.now` | \
$(SED) 's/\$$$$/\$$$$\$$$$/g' > $$($2_PACKAGE_BDIR)_the.package.d
$(ECHO) $1_JAVAS += $$($2_PACKAGE_SRCS) >> $$($2_PACKAGE_BDIR)_the.package.d
$(ECHO) $2_NOTIFIED:=true > $$($2_PACKAGE_BDIR)_the.package.notify
$$($2_APPEND_DEPS)
$$($2_COPY_FILES)
$(MV) -f $2.tmp $2
endef
define remove_string
$2 := $$(subst $1,,$$($2))
endef
@@ -664,140 +379,101 @@ define SetupJavaCompilation
$(if $(14),$1_$(strip $(14)))
$(if $(15),$(error Internal makefile error: Too many arguments to SetupJavaCompilation, please update JavaCompilation.gmk))
# Extract the info from the java compiler setup.
$1_MODE := $$($$($1_SETUP)_MODE)
ifneq (SINGLE_THREADED_BATCH,$$($1_MODE))
ifneq (MULTI_CORE_CONCURRENT,$$($1_MODE))
# Extract the info from the java compiler setup.
$1_REMOTE := $$($$($1_SETUP)_REMOTE)
$1_JVM := $$($$($1_SETUP)_JVM)
$1_JAVAC := $$($$($1_SETUP)_JAVAC)
$1_FLAGS := $$($$($1_SETUP)_FLAGS) $(JAVAC_FLAGS) $$($1_ADD_JAVAC_FLAGS)
ifeq ($$($1_JAVAC),)
$$(error The Java compilation $1 refers to a non-existant java compiler setup $$($1_SETUP))
endif
endif
$1_USE_DEPS := $$($$($1_SETUP)_USE_DEPS)
$1_REMOTE := $$($$($1_SETUP)_REMOTE)
$1_JVM := $$($$($1_SETUP)_JVM)
$1_JAVAC := $$($$($1_SETUP)_JAVAC)
$1_JAVAH := $$($$($1_SETUP)_JAVAH)
$1_FLAGS := $$($$($1_SETUP)_FLAGS) $(JAVAC_FLAGS) $$($1_ADD_JAVAC_FLAGS)
# Handle addons and overrides.
$1_SRC:=$$(call ADD_SRCS,$$($1_SRC))
# Make sure the dirs exist.
$$(shell $(MKDIR) -p $$($1_SRC) $$($1_BIN))
# Find all files in the source trees.
$1_ALL_SRCS := $$(filter-out $(OVR_SRCS),$$(foreach i,$$($1_SRC),$$(shell $(FIND) $$i -type f)))
# Extract the java files.
ifneq ($$($1_EXCLUDE_FILES),)
$1_EXCLUDE_FILES_PATTERN:=$$(addprefix %,$$($1_EXCLUDE_FILES))
endif
$1_SRCS := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$(filter %.java,$$($1_ALL_SRCS)))
ifneq ($$($1_INCLUDE_FILES),)
$1_INCLUDE_FILES:=$$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$($1_INCLUDE_FILES)))
$1_SRCS := $$(filter $$($1_INCLUDE_FILES), $$($1_SRCS))
endif
$1_PKGS := $$(sort $$(dir $$($1_SRCS)))
# Remove the source root from each found path.
$$(foreach i,$$($1_SRC),$$(eval $$(call remove_string,$$i,$1_PKGS)))
$1_PKGS := $$(sort $$($1_PKGS))
# There can be only a single bin dir root, no need to foreach over the roots.
$1_BINS := $$(shell $(FIND) $$($1_BIN) -name "*.class")
# Now we have a list of all java files to compile: $$($1_SRCS)
# and we have a list of all existing class files: $$($1_BINS)
# Create the corresponding smart javac wrapper command line.
$1_SJAVAC_ARGS:=$$(addprefix -x ,$$(addsuffix .*,$$(subst /,.,$$($1_EXCLUDES)))) \
$$(addprefix -i ,$$(addsuffix .*,$$(subst /,.,$$($1_INCLUDES)))) \
$$(addprefix -xf *,$$(strip $$($1_EXCLUDE_FILES))) \
$$(addprefix -if *,$$(strip $$($1_INCLUDE_FILES))) -src $$(subst $$(SPACE),$$(PATH_SEP),$$(strip $$($1_SRC)))
# Prepend the source/bin path to the filter expressions.
ifneq ($$($1_INCLUDES),)
$1_SRC_INCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_INCLUDES))))
$1_PKG_INCLUDES := $$(addprefix /,$$(addsuffix /%,$$($1_INCLUDES)))
$1_BIN_INCLUDES := $$(addprefix $$($1_BIN)/,$$(addsuffix /%,$$($1_INCLUDES)))
$1_SRCS := $$(filter $$($1_SRC_INCLUDES),$$($1_SRCS))
$1_PKGS := $$(filter $$($1_PKG_INCLUDES),$$($1_PKGS))
$1_BINS := $$(filter $$($1_BIN_INCLUDES),$$($1_BINS))
endif
ifneq ($$($1_EXCLUDES),)
$1_SRC_EXCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
$1_PKG_EXCLUDES := $$(addprefix /,$$(addsuffix /%,$$($1_EXCLUDES)))
$1_BIN_EXCLUDES := $$(addprefix $$($1_BIN)/,$$(addsuffix /%,$$($1_EXCLUDES)))
$1_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
$1_PKGS := $$(filter-out $$($1_PKG_EXCLUDES),$$($1_PKGS))
$1_BINS := $$(filter-out $$($1_BIN_EXCLUDES),$$($1_BINS))
endif
# Find all files to be copied from source to bin.
ifneq (,$$($1_COPY))
# Rewrite list of patterns into a find statement.
$1_COPY_PATTERN:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_COPY))
# Search for all files to be copied.
$1_ALL_COPIES := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i \( $$($1_COPY_PATTERN) \) -a -type f))
# Copy these explicitly
$1_ALL_COPIES += $$($1_COPY_FILES)
# Copy must also respect filters.
ifneq (,$$($1_INCLUDES))
$1_ALL_COPIES := $$(filter $$($1_SRC_INCLUDES),$$($1_ALL_COPIES))
# Handle addons and overrides.
$1_SRC:=$$(call ADD_SRCS,$$($1_SRC))
# Make sure the dirs exist.
$$(shell $(MKDIR) -p $$($1_SRC) $$($1_BIN))
# Find all files in the source trees.
$1_ALL_SRCS := $$(filter-out $(OVR_SRCS),$$(foreach i,$$($1_SRC),$$(shell $(FIND) $$i -type f)))
# Extract the java files.
ifneq ($$($1_EXCLUDE_FILES),)
$1_EXCLUDE_FILES_PATTERN:=$$(addprefix %,$$($1_EXCLUDE_FILES))
endif
ifneq (,$$($1_EXCLUDES))
$1_ALL_COPIES := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_ALL_COPIES))
$1_SRCS := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$(filter %.java,$$($1_ALL_SRCS)))
ifneq ($$($1_INCLUDE_FILES),)
$1_INCLUDE_FILES:=$$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$($1_INCLUDE_FILES)))
$1_SRCS := $$(filter $$($1_INCLUDE_FILES), $$($1_SRCS))
endif
ifneq (,$$($1_EXCLUDE_FILES))
$1_ALL_COPIES := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$($1_ALL_COPIES))
endif
# All files below META-INF are always copied.
$1_ALL_COPIES += $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i/META-INF -type f 2> /dev/null))
ifneq (,$$($1_ALL_COPIES))
# Yep, there are files to be copied!
$1_ALL_COPY_TARGETS:=
$$(foreach i,$$($1_ALL_COPIES),$$(eval $$(call add_file_to_copy,$1,$$i)))
# Now we can depend on $$($1_ALL_COPY_TARGETS) to copy all files!
endif
endif
# Find all property files to be copied and cleaned from source to bin.
ifneq (,$$($1_CLEAN))
# Rewrite list of patterns into a find statement.
$1_CLEAN_PATTERN:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_CLEAN))
# Search for all files to be copied.
$1_ALL_CLEANS := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i \( $$($1_CLEAN_PATTERN) \) -a -type f))
# Copy and clean must also respect filters.
ifneq (,$$($1_INCLUDES))
$1_ALL_CLEANS := $$(filter $$($1_SRC_INCLUDES),$$($1_ALL_CLEANS))
endif
ifneq (,$$($1_EXCLUDES))
$1_ALL_CLEANS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_ALL_CLEANS))
endif
ifneq (,$$($1_EXCLUDE_FILES))
$1_ALL_CLEANS := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$($1_ALL_CLEANS))
endif
ifneq (,$$($1_ALL_CLEANS))
# Yep, there are files to be copied and cleaned!
$1_ALL_COPY_CLEAN_TARGETS:=
$$(foreach i,$$($1_ALL_CLEANS),$$(eval $$(call add_file_to_copy_and_clean,$1,$$i)))
# Now we can depend on $$($1_ALL_COPY_CLEAN_TARGETS) to copy all files!
endif
endif
# Now we have a list of all java files to compile: $$($1_SRCS)
# Find all the directories that contain java sources, each directory
# corresponds to a package because we expect the source
# code to be organized in this standardized way!
$1_SDIRS := $$(sort $$(dir $$($1_SRCS)))
# Now prefix each package with the bin root.
$1_BDIRS := $$(foreach i,$$($1_PKGS),$$(addprefix $$($1_BIN),$$i))
# Now create a list of the packages that are about to compile. This list is
# later used to filter out dependencies that point outside of this set.
$$(shell $(RM) $$($1_BIN)/_the.list_of_packages)
$$(eval $$(call ListPathsSafelyNow,$1_BDIRS,\n, >> $$($1_BIN)/_the.list_of_packages))
# Create the corresponding smart javac wrapper command line.
$1_SJAVAC_ARGS:=$$(addprefix -x ,$$(addsuffix .*,$$(subst /,.,$$($1_EXCLUDES)))) \
$$(addprefix -i ,$$(addsuffix .*,$$(subst /,.,$$($1_INCLUDES)))) \
$$(addprefix -xf *,$$(strip $$($1_EXCLUDE_FILES))) \
$$(addprefix -if *,$$(strip $$($1_INCLUDE_FILES))) \
-src "$$(subst $$(SPACE),$$(PATH_SEP),$$(strip $$($1_SRC)))"
ifeq ($$($1_MODE),SINGLE_THREADED_BATCH)
# Ok, we will feed all the found java files into a single javac invocation.
# There can be no dependency checking, nor incremental builds. It is
# the best we can do with the old javac. If the javac supports a javac server
# then we can use the javac server.
# Prepend the source/bin path to the filter expressions.
ifneq ($$($1_INCLUDES),)
$1_SRC_INCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_INCLUDES))))
$1_SRCS := $$(filter $$($1_SRC_INCLUDES),$$($1_SRCS))
endif
ifneq ($$($1_EXCLUDES),)
$1_SRC_EXCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
$1_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
endif
# We can depend on this target file to trigger a regeneration of all the sources
$1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_BIN)/_the.batch
# Find all files to be copied from source to bin.
ifneq (,$$($1_COPY))
# Rewrite list of patterns into a find statement.
$1_COPY_PATTERN:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_COPY))
# Search for all files to be copied.
$1_ALL_COPIES := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i \( $$($1_COPY_PATTERN) \) -a -type f))
# Copy these explicitly
$1_ALL_COPIES += $$($1_COPY_FILES)
# Copy must also respect filters.
ifneq (,$$($1_INCLUDES))
$1_ALL_COPIES := $$(filter $$($1_SRC_INCLUDES),$$($1_ALL_COPIES))
endif
ifneq (,$$($1_EXCLUDES))
$1_ALL_COPIES := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_ALL_COPIES))
endif
ifneq (,$$($1_EXCLUDE_FILES))
$1_ALL_COPIES := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$($1_ALL_COPIES))
endif
# All files below META-INF are always copied.
$1_ALL_COPIES += $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i/META-INF -type f 2> /dev/null))
ifneq (,$$($1_ALL_COPIES))
# Yep, there are files to be copied!
$1_ALL_COPY_TARGETS:=
$$(foreach i,$$($1_ALL_COPIES),$$(eval $$(call add_file_to_copy,$1,$$i)))
# Now we can depend on $$($1_ALL_COPY_TARGETS) to copy all files!
endif
endif
# Find all property files to be copied and cleaned from source to bin.
ifneq (,$$($1_CLEAN))
# Rewrite list of patterns into a find statement.
$1_CLEAN_PATTERN:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_CLEAN))
# Search for all files to be copied.
$1_ALL_CLEANS := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i \( $$($1_CLEAN_PATTERN) \) -a -type f))
# Copy and clean must also respect filters.
ifneq (,$$($1_INCLUDES))
$1_ALL_CLEANS := $$(filter $$($1_SRC_INCLUDES),$$($1_ALL_CLEANS))
endif
ifneq (,$$($1_EXCLUDES))
$1_ALL_CLEANS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_ALL_CLEANS))
endif
ifneq (,$$($1_EXCLUDE_FILES))
$1_ALL_CLEANS := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$($1_ALL_CLEANS))
endif
ifneq (,$$($1_ALL_CLEANS))
# Yep, there are files to be copied and cleaned!
$1_ALL_COPY_CLEAN_TARGETS:=
$$(foreach i,$$($1_ALL_CLEANS),$$(eval $$(call add_file_to_copy_and_clean,$1,$$i)))
# Now we can depend on $$($1_ALL_COPY_CLEAN_TARGETS) to copy all files!
endif
endif
# Prep the source paths.
ifneq ($$($1_JAVAC_SOURCE_PATH_UGLY_OVERRIDE),)
@@ -807,113 +483,73 @@ ifeq ($$($1_MODE),SINGLE_THREADED_BATCH)
endif
ifneq (,$$($1_HEADERS))
$1_HEADERS_ARG := -h $$($1_HEADERS)
$1_HEADERS_ARG := -h $$($1_HEADERS)
endif
# Create a sed expression to remove the source roots and to replace / with .
# and remove .java at the end.
$1_REWRITE_INTO_CLASSES:=$$(foreach i,$$($1_SRC),-e 's|$$i/||g') -e 's|/|.|g' -e 's|.java$$$$||g'
# Here is the batch rules that depends on all the sources.
$$($1_BIN)/_the.batch: $$($1_SRCS) $$($1_DEPENDS)
$(MKDIR) -p $$(@D)
$(RM) $$($1_BIN)/_the.batch $$($1_BIN)/_the.batch.tmp
$$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.batch.tmp)
$(ECHO) Compiling `$(WC) $$($1_BIN)/_the.batch.tmp | $(TR) -s ' ' | $(CUT) -f 2 -d ' '` files in batch $1
ifeq ($$($1_NOSJAVAC),)
ifeq ($$(ENABLE_SJAVAC),yes)
mkdir -p $$($1_BIN)_sjavac
$$($1_JVM) $$(word 1,$$($1_JAVAC)) com.sun.tools.javac.smart.Main $$($1_SJAVAC_ARGS) -mfl $$($1_BIN)/_the.batch.tmp -d $$($1_BIN)_sjavac
endif
endif
($$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) -implicit:none -sourcepath "$$($1_SRCROOTSC)" -d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_BIN)/_the.batch.tmp && \
$(MV) $$($1_BIN)/_the.batch.tmp $$($1_BIN)/_the.batch)
else
# Ok, we have a modern javac server running!
# Since a single Java file can generate zero to an infinity number of .class files
# the exact number and names of the .class files will only be known after the compile.
# Thus after the compile, a list of the generated classes will be stored in _the.package.d
# which is included by the makefile during the next compile. These .d files will
# add the generated class names to the BUILD_MYPACKAGE_CLASSES variable and used java file names
# to the BUILD_MYPACKAGE_JAVAS variable.
$1_CLASSES :=
$1_JAVAS :=
# Create a file in each package that represents the package dependency.
# This file (_the.package) will also contain a list of the source files
# to be compiled for this package.
$1 := $$(sort $$(patsubst %,%_the.package,$$($1_BDIRS)))
# Now call add_java_package for each package to create the dependencies.
$$(foreach p,$$($1),$$(eval $$(call add_java_package,$1,$$p,$$($1_SRC),$$($1_BIN),$$($1_BIN)/_the.list_of_packages,NOTUSED,$$($1_USE_DEPS),$$($1_REMOTE),$$($1_JVM) $$($1_JAVAC),$$($1_FLAGS),$$($1_EXCLUDE_FILES_PATTERN) $(OVR_SRCS),$$($1_INCLUDE_FILES),$$($1_JVM) $$($1_JAVAH),$$($1_JAVAC_SOURCE_PATH_UGLY_OVERRIDE))))
# All dependencies are setup, now we only need to depend on $1 (aka $(BUILD_MYPACKAGE))
# and they will automatically be built!
ifeq ($$($1_DISABLE_SJAVAC)x$$(ENABLE_SJAVAC),xyes)
# Using sjavac to compile.
$1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_BIN)/javac_state
# Now add on any files to copy targets
$1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1)
# Remove the set of found classes from the set of all previously known classes
# and the remainder is the set of missing classes.
$1_MISSING_CLASSES:=$$(filter-out $$($1_BINS),$$($1_CLASSES))
$1_PKGS_MISSING_CLASSES:=$$(sort $$(dir $$($1_MISSING_CLASSES)))
# Remove the set of found java files from the set of all previously known java files
# the remainder is Java files that have gone missing.
$1_MISSING_JAVAS:=$$(filter-out $$($1_SRCS),$$($1_JAVAS))
$1_PKGS_MISSING_JAVAS:=$$(sort $$(dir $$($1_MISSING_JAVAS)))
# Remove each source root from the found paths.
$$(foreach i,$$($1_SRC),$$(eval $$(call remove_string,$$i,$1_PKGS_MISSING_JAVAS)))
# Finally remove duplicates and prefix with the binary path instead.
$1_PKGS_MISSING_JAVAS:= $$(addprefix $$($1_BIN),$$(sort $$($1_PKGS_MISSING_JAVAS)))
$$($1_BIN)/javac_state: $$($1_SRCS) $$($1_DEPENDS)
$(MKDIR) -p $$(@D)
$$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.batch.tmp)
$(ECHO) Compiling $1
$$($1_JVM) $$(word 1,$$($1_JAVAC)) com.sun.tools.sjavac.Main \
$$($1_REMOTE) $$($1_SJAVAC_ARGS) --permit-unidentified-artifacts -mfl $$($1_BIN)/_the.batch.tmp \
$$($1_FLAGS) \
-implicit:none -d $$($1_BIN) $$($1_HEADERS_ARG)
else
# Using plain javac to batch compile everything.
$1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_BIN)/_the.batch
# Remove the set of all theoretical classes from the set of found classes.
# the remainder is the set of superfluous classes.
$1_SUPERFLUOUS_CLASSES:=$$(sort $$(filter-out $$($1_CLASSES),$$($1_BINS)))
$1_PKGS_SUPERFLUOUS_CLASSES:=$$(sort $$(dir $$($1_SUPERFLUOUS_CLASSES)))
# Now delete the _the.package files inside the problematic dirs.
# This will force a rebuild of these packages!
$1_FOO:=$$(sort $$($1_PKGS_MISSING_CLASSES) \
$$($1_PKGS_SUPERFLUOUS_CLASSES) \
$$($1_PKGS_MISSING_JAVAS))
# ifneq (,$$($1_FOO))
# $$(info MESSED UP PACKAGES $$($1_FOO))
# endif
$$(shell $(RM) $$(addsuffix _the.package,$$(sort $$($1_PKGS_MISSING_CLASSES) \
$$($1_PKGS_SUPERFLUOUS_CLASSES) \
$$($1_PKGS_MISSING_JAVAS))))
# Normal makefile dependencies based on timestamps will detect the normal use case
# when Java files are simply added or modified.
endif
ifneq (,$$($1_JAR))
ifeq (,$$($1_SUFFIXES))
$1_SUFFIXES:=.class $$($1_CLEAN) $$($1_COPY)
# When not using sjavac, pass along all sources to javac using an @file.
$$($1_BIN)/_the.batch: $$($1_SRCS) $$($1_DEPENDS)
$(MKDIR) -p $$(@D)
$(RM) $$($1_BIN)/_the.batch $$($1_BIN)/_the.batch.tmp
$$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.batch.tmp)
$(ECHO) Compiling `$(WC) $$($1_BIN)/_the.batch.tmp | $(TR) -s ' ' | $(CUT) -f 2 -d ' '` files for $1
($$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) \
-implicit:none -sourcepath "$$($1_SRCROOTSC)" \
-d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_BIN)/_the.batch.tmp && \
$(MV) $$($1_BIN)/_the.batch.tmp $$($1_BIN)/_the.batch)
endif
# A jar file was specified. Set it up.
$$(eval $$(call SetupArchive,ARCHIVE_$1,$$($1),\
SRCS:=$$($1_BIN),\
SUFFIXES:=$$($1_SUFFIXES),\
EXCLUDE:=$$($1_EXCLUDES),\
INCLUDES:=$$($1_INCLUDES),\
EXTRA_FILES:=$$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS),\
JAR:=$$($1_JAR),\
JARMAIN:=$$($1_JARMAIN),\
MANIFEST:=$$($1_MANIFEST),\
EXTRA_MANIFEST_ATTR:=$$($1_EXTRA_MANIFEST_ATTR),\
JARINDEX:=$$($1_JARINDEX),\
HEADERS:=$$($1_HEADERS),\
SETUP:=$$($1_SETUP)))
endif
# Check if a jar file was specified, then setup the rules for the jar.
ifneq (,$$($1_JAR))
# If no suffixes was explicitly set for this jar file.
# Use class and the cleaned/copied properties file suffixes as the default
# for the types of files to be put into the jar.
ifeq (,$$($1_SUFFIXES))
$1_SUFFIXES:=.class $$($1_CLEAN) $$($1_COPY)
endif
ifneq (,$$($1_SRCZIP))
# A srczip file was specified. Set it up.
$$(eval $$(call SetupZipArchive,ARCHIVE_$1,\
$$(eval $$(call SetupArchive,ARCHIVE_$1,$$($1),\
SRCS:=$$($1_BIN),\
SUFFIXES:=$$($1_SUFFIXES),\
EXCLUDE:=$$($1_EXCLUDES),\
INCLUDES:=$$($1_INCLUDES),\
EXTRA_FILES:=$$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS),\
JAR:=$$($1_JAR),\
JARMAIN:=$$($1_JARMAIN),\
MANIFEST:=$$($1_MANIFEST),\
EXTRA_MANIFEST_ATTR:=$$($1_EXTRA_MANIFEST_ATTR),\
JARINDEX:=$$($1_JARINDEX),\
HEADERS:=$$($1_HEADERS),\
SETUP:=$$($1_SETUP)))
endif
# Check if a srczip was specified, then setup the rules for the srczip.
ifneq (,$$($1_SRCZIP))
$$(eval $$(call SetupZipArchive,ARCHIVE_$1,\
SRC:=$$($1_SRC),\
ZIP:=$$($1_SRCZIP),\
INCLUDES:=$$($1_INCLUDES),\
EXCLUDES:=$$($1_EXCLUDES),\
EXCLUDE_FILES:=$$($1_EXCLUDE_FILES)))
endif
endif
endef

View File

@@ -138,7 +138,7 @@ endef
# Hook to be called as the very first thing when running a normal build
define AtRootMakeStart
$(if $(findstring -j,$(MAKEFLAGS)), $(error make -j is not supported, use make JOBS=n))
$(if $(findstring --jobserver,$(MAKEFLAGS)), $(error make -j is not supported, use make JOBS=n))
$(call PrintStartMessage)
$(call StartTimer)
endef

View File

@@ -57,9 +57,25 @@ endef
define ParseLogLevel
ifeq ($$(origin VERBOSE),undefined)
# Setup logging according to LOG (but only if VERBOSE is not given)
# If the "nofile" argument is given, act on it and strip it away
ifneq ($$(findstring nofile,$$(LOG)),)
# Reset the build log wrapper, regardless of other values
override BUILD_LOG_WRAPPER=
# COMMA is defined in spec.gmk, but that is not included yet
COMMA=,
# First try to remove ",nofile" if it exists
LOG_STRIPPED1=$$(subst $$(COMMA)nofile,,$$(LOG))
# Otherwise just remove "nofile"
LOG_STRIPPED2=$$(subst nofile,,$$(LOG_STRIPPED1))
# We might have ended up with a leading comma. Remove it
LOG_STRIPPED3=$$(strip $$(patsubst $$(COMMA)%,%,$$(LOG_STRIPPED2)))
override LOG:=$$(LOG_STRIPPED3)
endif
ifeq ($$(LOG),)
# Set LOG to "warn" as default if not set (and no VERBOSE given)
LOG=warn
override LOG=warn
endif
ifeq ($$(LOG),warn)
VERBOSE=-s
@@ -182,4 +198,11 @@ define PrintEndMessage
$(call CheckEnvironment)
endef
# Cleans the component given as $1
define CleanComponent
@$(PRINTF) "Cleaning $1 build artifacts ..."
@($(CD) $(OUTPUT_ROOT) && $(RM) -r $1)
@$(PRINTF) " done\n"
endef
endif # _MAKEHELPERS_GMK

View File

@@ -26,6 +26,11 @@
# This must be the first rule
default: all
# Inclusion of this pseudo-target will cause make to execute this file
# serially, regardless of -j. Recursively called makefiles will not be
# affected, however. This is required for correct dependency management.
.NOTPARALLEL:
# Locate this Makefile
ifeq ($(filter /%,$(lastword $(MAKEFILE_LIST))),)
makefile_path:=$(CURDIR)/$(lastword $(MAKEFILE_LIST))
@@ -41,18 +46,18 @@ $(eval $(call ParseLogLevel))
$(eval $(call SetupLogging))
$(eval $(call ParseConfAndSpec))
# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
# hence this workaround.
ifeq ($(JOBS),)
JOBS=$(NUM_CORES)
endif
ifneq ($(words $(SPEC)),1)
### We have multiple configurations to build, call make repeatedly
all jdk hotspot jaxws jaxp corba langtools install images clean dist-clean:
@$(foreach spec,$(SPEC),($(MAKE) -f $(makefile_path) SPEC=$(spec) $(VERBOSE) VERBOSE=$(VERBOSE) $@ $(MAKE_ARGS)) &&) true
all clean dist-clean:
langtools corba jaxp jaxws hotspot jdk images overlay-images install:
langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only overlay-images-only install-only:
clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images:
@$(foreach spec,$(SPEC),($(MAKE) -f $(makefile_path) SPEC=$(spec) $(VERBOSE) VERBOSE=$(VERBOSE) $@) &&) true
.PHONY: all jdk hotspot jaxws jaxp corba langtools install images clean dist-clean
.PHONY: all clean dist-clean
.PHONY: langtools corba jaxp jaxws hotspot jdk images overlay-images install
.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only overlay-images-only install-only
.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images
else
### This is the main part of the Makefile, for the normal case with SPEC specifying a single existing spec.gmk file.
@@ -77,77 +82,110 @@ ifneq (,$(BUILD_LOG))
endif
# Remove any javac server logs and port files. This
# prevents a new make run to reuse the previous servers.
ifneq (,$(JAVAC_SERVERS))
$(shell mkdir -p $(JAVAC_SERVERS) && rm -rf $(JAVAC_SERVERS)/*)
ifneq (,$(SJAVAC_SERVER_DIR))
$(shell $(MKDIR) -p $(SJAVAC_SERVER_DIR) && $(RM) -rf $(SJAVAC_SERVER_DIR)/*)
endif
# Clean out any notifications from the previous build.
$(shell find $(OUTPUT_ROOT) -name "_the.*.notify" $(FIND_DELETE))
$(shell $(FIND) $(OUTPUT_ROOT) -name "_the.*.notify" $(FIND_DELETE))
# Reset the build timers.
$(eval $(call ResetTimers))
# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
# hence this workaround.
ifeq ($(JOBS),)
JOBS=$(NUM_CORES)
endif
MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
### Main targets
all: jdk
@$(if $(JAVAC_SERVERS),rm -rf $(JAVAC_SERVERS)/*.port)
@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
@$(call AtRootMakeEnd)
.PHONY: all
langtools: start-make langtools-only
langtools-only:
@$(call MakeStart,langtools,all)
@($(CD) $(LANGTOOLS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(MAKE_ARGS))
@($(CD) $(LANGTOOLS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
@$(call MakeFinish,langtools,all)
corba: langtools corba-only
corba-only:
@$(call MakeStart,corba,all)
@($(CD) $(CORBA_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(MAKE_ARGS))
@($(CD) $(CORBA_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
@$(call MakeFinish,corba,all)
jaxp: langtools jaxp-only
jaxp-only:
@$(call MakeStart,jaxp,all)
@($(CD) $(JAXP_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(MAKE_ARGS))
@($(CD) $(JAXP_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
@$(call MakeFinish,jaxp,all)
jaxws: langtools jaxp jaxws-only
jaxws-only:
@$(call MakeStart,jaxws,all)
@($(CD) $(JAXWS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(MAKE_ARGS))
@($(CD) $(JAXWS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
@$(call MakeFinish,jaxws,all)
hotspot: langtools hotspot-only
hotspot-only:
@$(call MakeStart,hotspot,all)
@($(CD) $(HOTSPOT_TOPDIR)/make && $(BUILD_LOG_WRAPPER) $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) $(MAKE_ARGS))
@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
@$(call MakeFinish,hotspot,all)
jdk: langtools corba jaxp jaxws hotspot jdk-only
jdk-only:
@$(call MakeStart,jdk,all)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(MAKE_ARGS))
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) $(JDK_TARGET))
@$(call MakeFinish,jdk,all)
images: source-tips start-make jdk langtools corba jaxp jaxws hotspot images-only
images-only:
@$(call MakeStart,jdk-images,$@)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(JDK_MAKE_ARGS) $(MAKE_ARGS) images)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) images)
@$(call MakeFinish,jdk-images,$@)
@$(if $(JAVAC_SERVERS),rm -rf $(JAVAC_SERVERS)/*.port)
@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
@$(call AtRootMakeEnd)
overlay-images: source-tips start-make jdk langtools corba jaxp jaxws hotspot overlay-images-only
overlay-images-only:
@$(call MakeStart,jdk-overlay-images,$@)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) overlay-images)
@$(call MakeFinish,jdk-overlay-images,$@)
@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
@$(call AtRootMakeEnd)
install: source-tips start-make jdk langtools corba jaxp jaxws hotspot install-only
install-only:
@$(call MakeStart,jdk-images,$@)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(JOBS) $(JDK_MAKE_ARGS) $(MAKE_ARGS) install)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) install)
@$(call MakeFinish,jdk-images,$@)
@$(if $(JAVAC_SERVERS),rm -rf $(JAVAC_SERVERS)/*.port)
@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
@$(call AtRootMakeEnd)
docs: start-make jdk docs-only
docs-only:
@$(call MakeStart,docs,$@)
@($(CD) $(SRC_ROOT)/common/makefiles/javadoc && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)
@$(call MakeFinish,docs,$@)
@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
@$(call AtRootMakeEnd)
.PHONY: langtools corba jaxp jaxws hotspot jdk images install
.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only install-only
start-make:
@$(call AtRootMakeStart)
.PHONY: start-make
.PHONY: jdk hotspot jaxws jaxp corba langtools install images start-make
bootcycle-images:
@$(ECHO) Boot cycle build step 1: Building the JDK image normally
@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(SPEC) images)
@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(dir $(SPEC))bootcycle-spec.gmk images)
test: start-make
@$(call MakeStart,test,$(if $(TEST),$(TEST),all))
@@ -167,8 +205,8 @@ $(OUTPUT_ROOT)/source_tips: FRC
# Remove everything, except the output from configure.
clean:
@(cd $(OUTPUT_ROOT) && $(RM) -r `$(LS) $(OUTPUT_ROOT) | grep -v spec.gmk | grep -v spec.sh | grep -v Makefile | grep -v config.status | grep -v config.log | grep -v config.h | grep -v configure-arguments | grep -v "localdevenv.*" | grep -v uncygdrive.exe`)
clean: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images clean-bootcycle-build
@($(CD) $(OUTPUT_ROOT) && $(RM) -r tmp source_tips build.log*)
@$(ECHO) Cleaned everything except the build configuration.
.PHONY: clean
@@ -178,11 +216,24 @@ dist-clean:
@$(ECHO) Cleaned everything, you will have to re-run configure.
.PHONY: dist-clean
clean-langtools:
$(call CleanComponent,langtools)
clean-corba:
$(call CleanComponent,corba)
clean-jaxp:
$(call CleanComponent,jaxp)
clean-jaxws:
$(call CleanComponent,jaxws)
clean-hotspot:
$(call CleanComponent,hotspot)
clean-jdk:
@(cd $(OUTPUT_ROOT) && $(RM) -r `$(LS) $(OUTPUT_ROOT) | grep -v spec.gmk | grep -v spec.sh | grep -v Makefile | grep -v config.status | grep -v config.log | grep -v config.h | grep -v configure-arguments | \
grep -v langtools | grep -v corba | grep -v jaxp | grep -v jaxws | grep -v hotspot`)
@$(ECHO) "Cleaned jdk build artifacts (but not langtools,corba,jaxp,jaxws,hotspot nor the build configuration)"
.PHONY: clean
$(call CleanComponent,jdk)
clean-images:
$(call CleanComponent,images)
clean-bootcycle-build:
$(call CleanComponent,bootcycle-build)
.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images
endif
@@ -195,24 +246,39 @@ help:
$(info =====================)
$(info )
$(info Common make targets)
$(info . make [all] # Compile all code but do not create images)
$(info . make images # Create complete j2sdk and j2re images)
$(info . make install # Install the generated images locally)
$(info . make clean # Remove all files generated by make, but not those generated by configure)
$(info . make dist-clean # Remove all files generated by both make and configure)
$(info . make help # Give some help on using make)
$(info . make test # Run tests, default is all tests (see TEST below))
$(info . make [all] # Compile all code but do not create images)
$(info . make images # Create complete j2sdk and j2re images)
$(info . make overlay-images # Create limited images for sparc 64 bit platforms)
$(info . make bootcycle-images # Build images twice, second time with newly build JDK)
$(info . make install # Install the generated images locally)
$(info . make clean # Remove all files generated by make, but not those)
$(info . # generated by configure)
$(info . make dist-clean # Remove all files, including configuration)
$(info . make help # Give some help on using make)
$(info . make test # Run tests, default is all tests (see TEST below))
$(info )
$(info Targets for specific components)
$(info (Component is any of langtools, corba, jaxp, jaxws, hotspot, jdk or images))
$(info . make <component> # Build <component> and everything it depends on. )
$(info . make <component>-only # Build <component> only, without dependencies. This)
$(info . # is faster but can result in incorrect build results!)
$(info . make clean-<component> # Remove files generated by make for <component>)
$(info )
$(info Useful make variables)
$(info . make CONF= # Build all configurations (note, assignment is empty))
$(info . make CONF=<substring> # Build the configuration(s) with a name matching the given substring)
$(info . make CONF= # Build all configurations (note, assignment is empty))
$(info . make CONF=<substring> # Build the configuration(s) with a name matching)
$(info . # <substring>)
$(info )
$(info . make LOG=<loglevel> # Change loglevel from warn (default) to the given loglevel)
$(info . # Available loglevels are: warn, info, debug and trace)
$(info . # To see executed command lines, use LOG=info)
$(info . make LOG=<loglevel> # Change the log level from warn to <loglevel>)
$(info . # Available log levels are:)
$(info . # 'warn' (default), 'info', 'debug' and 'trace')
$(info . # To see executed command lines, use LOG=info)
$(info )
$(info . make test TEST=<test> # Only run the given test or tests, e.g.)
$(info . # make test TEST="jdk_lang jdk_net")
$(info . make JOBS=<n> # Run <n> parallel make jobs)
$(info . # Note that -jN does not work as expected!)
$(info )
$(info . make test TEST=<test> # Only run the given test or tests, e.g.)
$(info . # make test TEST="jdk_lang jdk_net")
$(info )
.PHONY: help
FRC: # Force target

View File

@@ -55,22 +55,22 @@ define add_native_source
ifneq (,$$(filter %.c,$2))
# Compile as a C file
$1_$2_FLAGS=$4 $$($1_$(notdir $2)_CFLAGS) -c
$1_$2_FLAGS=$4 $$($1_$(notdir $2)_CFLAGS) -DTHIS_FILE='"$$(<F)"' -c
$1_$2_COMP=$5
$1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
else ifneq (,$$(filter %.m,$2))
# Compile as a objective-c file
$1_$2_FLAGS=-x objective-c $4 $$($1_$(notdir $2)_CFLAGS) -c
$1_$2_FLAGS=-x objective-c $4 $$($1_$(notdir $2)_CFLAGS) -DTHIS_FILE='"$$(<F)"' -c
$1_$2_COMP=$5
$1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
else ifneq (,$$(filter %.s,$2))
# Compile as assembler file
$1_$2_FLAGS=$8
$1_$2_FLAGS=$8 -DTHIS_FILE='"$$(<F)"'
$1_$2_COMP=$(AS)
$1_$2_DEP_FLAG:=
else
# Compile as a C++ file
$1_$2_FLAGS=$6 $$($1_$(notdir $2)_CXXFLAGS) -c
$1_$2_FLAGS=$6 $$($1_$(notdir $2)_CXXFLAGS) -DTHIS_FILE='"$$(<F)"' -c
$1_$2_COMP=$7
$1_$2_DEP_FLAG:=$(CXX_FLAG_DEPS)
endif
@@ -98,7 +98,6 @@ define add_native_source
$$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
endif
ifeq ($(COMPILER_TYPE),CL)
$$(call COMPILING_MSG,$$(notdir $2))
$$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEBUG_OUT_FLAGS) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
endif
endif
@@ -129,6 +128,7 @@ define SetupNativeCompilation
# DEBUG_SYMBOLS add debug symbols (if configured on)
# CC the compiler to use, default is $(CC)
# LDEXE the linker to use for linking executables, default is $(LDEXE)
# OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST
$(if $2,$1_$(strip $2))
$(if $3,$1_$(strip $3))
$(if $4,$1_$(strip $4))
@@ -149,7 +149,11 @@ define SetupNativeCompilation
$(if $(19),$1_$(strip $(19)))
$(if $(20),$1_$(strip $(20)))
$(if $(21),$1_$(strip $(21)))
$(if $(22),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
$(if $(22),$1_$(strip $(22)))
$(if $(23),$1_$(strip $(23)))
$(if $(24),$1_$(strip $(24)))
$(if $(25),$1_$(strip $(25)))
$(if $(26),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
ifneq (,$$($1_BIN))
$$(error BIN has been replaced with OBJECT_DIR)
@@ -315,6 +319,17 @@ define SetupNativeCompilation
$1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_release)
endif
ifneq (,$$($1_DEBUG_SYMBOLS))
ifeq ($(ENABLE_DEBUG_SYMBOLS), yes)
# Programs don't get the debug symbols added in the old build. It's not clear if
# this is intentional.
ifeq ($$($1_PROGRAM),)
$1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
$1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
endif
endif
endif
ifeq ($$($1_CXXFLAGS),)
$1_CXXFLAGS:=$$($1_CFLAGS)
endif
@@ -327,40 +342,20 @@ define SetupNativeCompilation
$1_EXTRA_CXXFLAGS += $$(CXX_FLAG_REORDER)
endif
ifneq (no, $(ENABLE_DEBUG_SYMBOLS))
ifneq ($(OPENJDK_TARGET_OS), solaris)
# <weird code />
# There is very weird code in Defs-solaris.gmk that first sets variables as decribed below
# and then a couple of hundreds of line below resets them...
# this feels like a sure bug...but before this is confirmed, mimic this behaviour
# (note: skip indenting this as it will surely be removed anyway)
# <weird code />
ifneq (,$$($1_DEBUG_SYMBOLS))
$1_OPTIMIZATION := LOW
$1_EXTRA_CFLAGS += $(CFLAGS_DEBUG_SYMBOLS)
$1_EXTRA_CXXFLAGS += $(CXXFLAGS_DEBUG_SYMBOLS)
endif
# <weird code />
endif
# <weird code />
endif
ifeq (NONE, $$($1_OPTIMIZATION))
$1_EXTRA_CFLAGS += $$(C_O_FLAG_NONE)
$1_EXTRA_CXXFLAGS += $$(CXX_O_FLAG_NONE)
$1_EXTRA_CFLAGS += $(C_O_FLAG_NONE)
$1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_NONE)
else ifeq (LOW, $$($1_OPTIMIZATION))
$1_EXTRA_CFLAGS += $$(C_O_FLAG_NORM)
$1_EXTRA_CXXFLAGS += $$(CXX_O_FLAG_NORM)
$1_EXTRA_CFLAGS += $(C_O_FLAG_NORM)
$1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_NORM)
else ifeq (HIGH, $$($1_OPTIMIZATION))
$1_EXTRA_CFLAGS += $$(C_O_FLAG_HI)
$1_EXTRA_CXXFLAGS += $$(CXX_O_FLAG_HI)
$1_EXTRA_CFLAGS += $(C_O_FLAG_HI)
$1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_HI)
else ifeq (HIGHEST, $$($1_OPTIMIZATION))
$1_EXTRA_CFLAGS += $$(C_O_FLAG_HIGHEST)
$1_EXTRA_CXXFLAGS += $$(CXX_O_FLAG_HIGHEST)
$1_EXTRA_CFLAGS += $(C_O_FLAG_HIGHEST)
$1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_HIGHEST)
else ifneq (, $$($1_OPTIMIZATION))
$$(error Unknown value for OPTIMIZATION: $$($1_OPTIMIZATION))
$$(error Unknown value for OPTIMIZATION: $$($1_OPTIMIZATION))
endif
# Now create a list of the packages that are about to compile. Used when sending source
@@ -375,7 +370,7 @@ define SetupNativeCompilation
$$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS),$(CXX),$$($1_ASFLAGS))))
# On windows we need to create a resource file
ifeq ($(OPENJDK_TARGET_OS_API), winapi)
ifeq ($(OPENJDK_TARGET_OS), windows)
ifneq (,$$($1_VERSIONINFO_RESOURCE))
$1_RES:=$$($1_OBJECT_DIR)/$$($1_BASENAME).res
$$($1_RES): $$($1_VERSIONINFO_RESOURCE)
@@ -409,8 +404,8 @@ define SetupNativeCompilation
endif
endif
# Pickup extra OPENJDK_TARGET_OS_API dependent variables (posix or winapi) and
# (linux,solaris,windows,bsd) for LDFLAGS and LDFLAGS_SUFFIX
# Pickup extra OPENJDK_TARGET_OS_API and/or OPENJDK_TARGET_OS dependent variables
# for LDFLAGS and LDFLAGS_SUFFIX
$1_EXTRA_LDFLAGS:=$$($1_LDFLAGS_$(OPENJDK_TARGET_OS_API)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
$1_EXTRA_LDFLAGS_SUFFIX:=$$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS_API)) $$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS))
ifneq (,$$($1_REAL_MAPFILE))
@@ -432,9 +427,10 @@ define SetupNativeCompilation
"-map:$$($1_OBJECT_DIR)/$$($1_LIBRARY).map"
endif
$$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
$$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
$(CP) $$< $$@
endif
ifeq ($(OPENJDK_TARGET_OS), solaris)
# gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
@@ -509,8 +505,10 @@ define SetupNativeCompilation
"-map:$$($1_OBJECT_DIR)/$$($1_PROGRAM).map"
endif
$$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
$$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
$(CP) $$< $$@
endif
ifeq ($(OPENJDK_TARGET_OS), solaris)
# gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.

View File

@@ -0,0 +1,293 @@
#
# Copyright (c) 2001, 2011, 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.
#
# EXCLUDE_PKGS is the list of packages to exclude from the
# Java API Specification. Do not add these to CORE_PKGS.
# The concatenation of EXCLUDE_PKGS and CORE_PKGS
# should make up the list of all packages under the
# src/shared/classes directory of the JDK source tree.
#
EXCLUDE_PKGS = \
java.awt.peer \
java.awt.dnd.peer \
sun.* \
com.sun.* \
org.apache.* \
org.jcp.* \
org.w3c.dom.css \
org.w3c.dom.html \
org.w3c.dom.stylesheets \
org.w3c.dom.traversal \
org.w3c.dom.ranges \
org.w3c.dom.views \
org.omg.stub.javax.management.remote.rmi
#
# ACTIVE_JSR_PKGS are packages that are part of an active JSR process--
# one that is doing its own review. These packages are not included when
# creating diff pages for the platform's JCP process.
#
# (see /java/pubs/apisrc/jdk/6.0/beta/make/docs/active_jsr_pkgs)
# Note:
# This is a list of regular expressions. So foo.* matches "foo" and "foo.bar".
#
ACTIVE_JSR_PKGS= \
java.lang.invoke \
java.sql \
javax.activation \
javax.annotation.* \
javax.jws.* \
javax.lang.* \
javax.management.* \
javax.script \
javax.sql.* \
javax.tools.* \
javax.xml.* \
org.w3c.* \
org.xml.sax
#
# CORE_PKGS is the list of packages that form the
# Java API Specification.
#
### ***IMPORTANT NOTE***
### There is also a "REGEXP" variable in the docs/makefile that
### determines which table the packages go in on the main page.
### Currently, there is only table ("Platform Packages") and
### everything goes in it, so REGEXP is "*". But if that policy
### changes, packages added will need to be reflected in that
### list of wildcard expressions, as well.
###
CORE_PKGS = \
java.applet \
java.awt \
java.awt.color \
java.awt.datatransfer \
java.awt.dnd \
java.awt.event \
java.awt.font \
java.awt.geom \
java.awt.im \
java.awt.im.spi \
java.awt.image \
java.awt.image.renderable \
java.awt.print \
java.beans \
java.beans.beancontext \
java.io \
java.lang \
java.lang.annotation \
java.lang.instrument \
java.lang.invoke \
java.lang.management \
java.lang.ref \
java.lang.reflect \
java.math \
java.net \
java.nio \
java.nio.channels \
java.nio.channels.spi \
java.nio.charset \
java.nio.charset.spi \
java.nio.file \
java.nio.file.attribute \
java.nio.file.spi \
java.rmi \
java.rmi.activation \
java.rmi.dgc \
java.rmi.registry \
java.rmi.server \
java.security \
java.security.acl \
java.security.cert \
java.security.interfaces \
java.security.spec \
java.sql \
java.text \
java.text.spi \
java.util \
java.util.concurrent \
java.util.concurrent.atomic \
java.util.concurrent.locks \
java.util.jar \
java.util.logging \
java.util.prefs \
java.util.regex \
java.util.spi \
java.util.zip \
javax.accessibility \
javax.activation \
javax.activity \
javax.annotation \
javax.annotation.processing \
javax.crypto \
javax.crypto.interfaces \
javax.crypto.spec \
javax.imageio \
javax.imageio.event \
javax.imageio.metadata \
javax.imageio.plugins.jpeg \
javax.imageio.plugins.bmp \
javax.imageio.spi \
javax.imageio.stream \
javax.jws \
javax.jws.soap \
javax.lang.model \
javax.lang.model.element \
javax.lang.model.type \
javax.lang.model.util \
javax.management \
javax.management.loading \
javax.management.monitor \
javax.management.relation \
javax.management.openmbean \
javax.management.timer \
javax.management.modelmbean \
javax.management.remote \
javax.management.remote.rmi \
javax.naming \
javax.naming.directory \
javax.naming.event \
javax.naming.ldap \
javax.naming.spi \
javax.net \
javax.net.ssl \
javax.print \
javax.print.attribute \
javax.print.attribute.standard \
javax.print.event \
javax.rmi \
javax.rmi.CORBA \
javax.rmi.ssl \
javax.script \
javax.security.auth \
javax.security.auth.callback \
javax.security.auth.kerberos \
javax.security.auth.login \
javax.security.auth.spi \
javax.security.auth.x500 \
javax.security.cert \
javax.security.sasl \
javax.sound.sampled \
javax.sound.sampled.spi \
javax.sound.midi \
javax.sound.midi.spi \
javax.sql \
javax.sql.rowset \
javax.sql.rowset.serial \
javax.sql.rowset.spi \
javax.swing \
javax.swing.border \
javax.swing.colorchooser \
javax.swing.filechooser \
javax.swing.event \
javax.swing.table \
javax.swing.text \
javax.swing.text.html \
javax.swing.text.html.parser \
javax.swing.text.rtf \
javax.swing.tree \
javax.swing.undo \
javax.swing.plaf \
javax.swing.plaf.basic \
javax.swing.plaf.metal \
javax.swing.plaf.multi \
javax.swing.plaf.nimbus \
javax.swing.plaf.synth \
javax.tools \
javax.tools.annotation \
javax.transaction \
javax.transaction.xa \
javax.xml.parsers \
javax.xml.bind \
javax.xml.bind.annotation \
javax.xml.bind.annotation.adapters \
javax.xml.bind.attachment \
javax.xml.bind.helpers \
javax.xml.bind.util \
javax.xml.soap \
javax.xml.ws \
javax.xml.ws.handler \
javax.xml.ws.handler.soap \
javax.xml.ws.http \
javax.xml.ws.soap \
javax.xml.ws.spi \
javax.xml.ws.spi.http \
javax.xml.ws.wsaddressing \
javax.xml.transform \
javax.xml.transform.sax \
javax.xml.transform.dom \
javax.xml.transform.stax \
javax.xml.transform.stream \
javax.xml \
javax.xml.crypto \
javax.xml.crypto.dom \
javax.xml.crypto.dsig \
javax.xml.crypto.dsig.dom \
javax.xml.crypto.dsig.keyinfo \
javax.xml.crypto.dsig.spec \
javax.xml.datatype \
javax.xml.validation \
javax.xml.namespace \
javax.xml.xpath \
javax.xml.stream \
javax.xml.stream.events \
javax.xml.stream.util \
org.ietf.jgss \
org.omg.CORBA \
org.omg.CORBA.DynAnyPackage \
org.omg.CORBA.ORBPackage \
org.omg.CORBA.TypeCodePackage \
org.omg.stub.java.rmi \
org.omg.CORBA.portable \
org.omg.CORBA_2_3 \
org.omg.CORBA_2_3.portable \
org.omg.CosNaming \
org.omg.CosNaming.NamingContextExtPackage \
org.omg.CosNaming.NamingContextPackage \
org.omg.SendingContext \
org.omg.PortableServer \
org.omg.PortableServer.CurrentPackage \
org.omg.PortableServer.POAPackage \
org.omg.PortableServer.POAManagerPackage \
org.omg.PortableServer.ServantLocatorPackage \
org.omg.PortableServer.portable \
org.omg.PortableInterceptor \
org.omg.PortableInterceptor.ORBInitInfoPackage \
org.omg.Messaging \
org.omg.IOP \
org.omg.IOP.CodecFactoryPackage \
org.omg.IOP.CodecPackage \
org.omg.Dynamic \
org.omg.DynamicAny \
org.omg.DynamicAny.DynAnyPackage \
org.omg.DynamicAny.DynAnyFactoryPackage \
org.w3c.dom \
org.w3c.dom.events \
org.w3c.dom.bootstrap \
org.w3c.dom.ls \
org.xml.sax \
org.xml.sax.ext \
org.xml.sax.helpers

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,106 @@
#
# Copyright (c) 2002, 2012, 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.
#
#
# This file contains the package names of all the "non-core"
# API published in the Java 2 SDK documentation. "Non-core" means
# it includes all published API outside of the JDK API specification.
#
# These environment variables are used by javadoc in
# make/docs/Makefile and are referenced by the localization
# team when determining which APIs to extract javadoc
# comments from.
DOMAPI_PKGS = com.sun.java.browser.dom \
org.w3c.dom \
org.w3c.dom.bootstrap \
org.w3c.dom.ls \
org.w3c.dom.ranges \
org.w3c.dom.traversal \
org.w3c.dom.html \
org.w3c.dom.stylesheets \
org.w3c.dom.css \
org.w3c.dom.events \
org.w3c.dom.views
JDI_PKGS = com.sun.jdi \
com.sun.jdi.event \
com.sun.jdi.request \
com.sun.jdi.connect \
com.sun.jdi.connect.spi
MGMT_PKGS = com.sun.management
JAAS_PKGS = com.sun.security.auth \
com.sun.security.auth.callback \
com.sun.security.auth.login \
com.sun.security.auth.module
JGSS_PKGS = com.sun.security.jgss
OLD_JSSE_PKGS = com.sun.net.ssl
HTTPSERVER_PKGS = com.sun.net.httpserver \
com.sun.net.httpserver.spi
NIO_PKGS = com.sun.nio.file
DOCLETAPI_PKGS = com.sun.javadoc
TAGLETAPI_FILE = com/sun/tools/doclets/Taglet.java
TAGLETAPI_PKGS = com.sun.tools.doclets
ATTACH_PKGS = com.sun.tools.attach \
com.sun.tools.attach.spi
JCONSOLE_PKGS = com.sun.tools.jconsole
TREEAPI_PKGS = com.sun.source.tree \
com.sun.source.util
SMARTCARDIO_PKGS = javax.smartcardio
SCTPAPI_PKGS = com.sun.nio.sctp
ifeq ($(PLATFORM), macosx)
APPLE_EXT_PKGS = com.apple.concurrent \
com.apple.eawt \
com.apple.eawt.event \
com.apple.eio
endif
# non-core packages in rt.jar
NON_CORE_PKGS = $(DOMAPI_PKGS) \
$(MGMT_PKGS) \
$(JAAS_PKGS) \
$(JGSS_PKGS) \
$(NIO_PKGS) \
$(OLD_JSSE_PKGS) \
$(HTTPSERVER_PKGS) \
$(SMARTCARDIO_PKGS) \
$(SCTPAPI_PKGS) \
$(APPLE_EXT_PKGS)

View File

@@ -0,0 +1,49 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Doc Process Notes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h3><a name="REGEXP"></a><br>
REGEXP</h3>
<p> REGEXP is a list of wildcard patterns that determines which packages listed
in CORE_PKGS.gmk go into which summary-table on the main API index page. It
was motivated by the need to divide the world into &quot;core packages&quot;
(java.*) and &quot;extension packages&quot; (javax.*). In time, the distinction
went away. The whole table is now called &quot;Platform Packages&quot;--which
eliminated the need for this list of regular expressions. But it lingered on,
accreting all of the packages in the JVM, one by one. I pruned it back to &quot;*&quot;,
so it now covers every package in the Java platform API docs. If some separation
is needed in the future, it can grow back into a colon-separated list, starting
with this, which is in all respects equivalent to &quot;*&quot; at this point
in time:</p>
<blockquote>
<pre>REGEXP = &quot;java.*:javax.*:org.ietf*:org.omg.</pre>
</blockquote>
<h3><a name="releaseTargets"></a><br>
Release Targets</h3>
<p> (Thanks to Kelly O'Hair for this info.)</p>
<p> The <tt>rel-coredocs</tt> and <tt>rel-docs</tt> targets were added by Eric
Armstrong. <tt>rel-coredocs</tt> assumes the kind of large, 32-bit machine used
in the javapubs group's docs-release process. It specifies memory settings accordingly
to maximize performance.</p>
<p> The performance settings, like the sanity check, are most important for the
core docs--the platform APIs. Running javadoc on those APIs takes a significant
amount of time and memory. Setting the initial heap size as large as possible
is important to prevent thrashing as the heap grows. Setting the maximum as
large as necessary is also important to keep the job from failing.</p>
<blockquote>
<p> <tt>-J-Xmx512</tt> sets a maximum of 512, which became necessary in 6.0<br>
<tt>-J-Xms256</tt> sets starting size to 256 (default is 8)</p>
</blockquote>
<p> <tt>rel-coredocs</tt> also includes a sanity check to help ensure that <tt>BUILD_NUMBER</tt>
and <tt>MILESTONE</tt> are specified properly when docs are built outside of
the normal release engineering process, with the intention of releasing them
on the web or in a downloaded docs bundle. (When invoked in release engineering's
control build, the values are always set properly. But when the targets are
run by themselves, they default to b00 and &quot;internal&quot;--which silently
sabotage the result of a build that can take many hours to complete.</p>
</body>
</html>

View File

@@ -176,3 +176,10 @@ d20d9eb9f093adbf392918c703960ad24c93a331 jdk8-b50
80689ff9cb499837513f18a1136dac7f0686cd55 jdk8-b52
63aeb7a2472fb299134ad7388e0a111a5340b02d jdk8-b53
16c82fc74695bab9b9e0fb05c086a5a08ba0082f jdk8-b54
e8a0e84383d6fbd303ce44bd355fb25972b13286 jdk8-b55
bf1bb47414e178beff67dc255fc3b97bf401f679 jdk8-b56
f3ab4163ae012965fc8acdfc25ce0fece8d6906d jdk8-b57
18462a19f7bd66d38015f61ea549a5e0c0c889a3 jdk8-b58
d54dc53e223ed9ce7d5f4d2cd02ad9d5def3c2db jdk8-b59
207ef43ba69ead6cbbab415d81834545e4d46747 jdk8-b60
0e08ba7648fb3faa0986cb217887d7c4990977f3 jdk8-b61

View File

@@ -151,16 +151,26 @@ CD = cd # intrinsic unix command
ifeq ($(PLATFORM),windows)
ifdef USING_CYGWIN
# Intrinsic unix command, with backslash-escaped character interpretation
ECHO = $(UNIXCOMMAND_PATH)echo -e
ZIPEXE = $(UNIXCOMMAND_PATH)zip
UNZIP = $(UNIXCOMMAND_PATH)unzip
ECHO = $(UNIXCOMMAND_PATH)echo -e
ZIPEXE = $(UNIXCOMMAND_PATH)zip
UNZIP = $(UNIXCOMMAND_PATH)unzip
# Some CYGWIN nawk versions require BINMODE=w for proper '\r' interpretation
NAWK = $(UNIXCOMMAND_PATH)awk -v BINMODE=w
else
ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
UNZIP = $(UTILS_DEVTOOL_PATH)unzip
ifdef USING_MSYS
ECHO = $(UTILS_COMMAND_PATH)echo -e
ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
UNZIP = $(UTILS_DEVTOOL_PATH)unzip
NAWK = $(UNIXCOMMAND_PATH)awk
else
ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
UNZIP = $(UTILS_DEVTOOL_PATH)unzip
NAWK = $(UNIXCOMMAND_PATH)awk
endif
endif
# Re-define some utilities
LEX =# override GNU Make intrinsic: no lex on windows
NAWK = $(UNIXCOMMAND_PATH)awk
SHA1SUM = $(UNIXCOMMAND_PATH)openssl sha1
endif
# Linux specific

View File

@@ -91,6 +91,15 @@ define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then $(CYGPATH_CMD) "$1"; else echo "$1"; fi)
endef
else
ifdef USING_MSYS
DOSPATH_CMD:=$(shell cd $(JDK_TOPDIR) 2> $(DEV_NULL) && pwd)/make/tools/msys_build_scripts/dospath.sh
define FullPath
$(subst \,/,$(shell $(DOSPATH_CMD) $1))
endef
define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
endef
else
# Temporary until we upgrade to MKS 8.7, MKS pwd returns mixed mode path
define FullPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
@@ -99,6 +108,7 @@ define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
endef
endif
endif
# System drive
ifdef SYSTEMDRIVE
@@ -112,14 +122,21 @@ _system_drive:=$(call CheckValue,_system_drive,C:)
# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifndef UNIXCOMMAND_PATH
ifdef ALT_UNIXCOMMAND_PATH
# With cygwin, use this as is; don't use FullPath on it.
ifdef ALT_UNIXCOMMAND_PATH
ifdef USING_CYGWIN
UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
else
xALT_UNIXCOMMAND_PATH :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))"
fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH))
UNIXCOMMAND_PATH :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH))
endif
else
ifdef USING_CYGWIN
UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin)
else
ifdef USING_CYGWIN
UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin)
ifdef USING_MSYS
UNIXCOMMAND_PATH :=$(call PrefixPath,/bin)
else
ifdef ROOTDIR
xROOTDIR :="$(subst \,/,$(ROOTDIR))"
@@ -131,41 +148,35 @@ ifndef UNIXCOMMAND_PATH
ifneq ($(_rootdir),)
UNIXCOMMAND_PATH :=$(call PrefixPath,$(_rootdir)/mksnt)
endif
endif
endif
UNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH)
export UNIXCOMMAND_PATH
endif # USING_MSYS
endif # USING_CYGWIN
endif
UNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH)
export UNIXCOMMAND_PATH
# Get version of MKS or CYGWIN
ifdef USING_CYGWIN
ifndef CYGWIN_VER
_CYGWIN_VER :=$(shell $(UNAME))
CYGWIN_VER :=$(call GetVersion,$(_CYGWIN_VER))
export CYGWIN_VER
ifdef USING_MKS
_MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@')
MKS_VER :=$(call GetVersion,$(_MKS_VER))
# At this point, we can re-define FullPath to use DOSNAME_CMD
CHECK_MKS87:=$(call CheckVersions,$(MKS_VER),8.7)
TRY_DOSNAME:=false
ifeq ($(CHECK_MKS87),same)
TRY_DOSNAME:=true
endif
else # MKS
_MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@')
MKS_VER :=$(call GetVersion,$(_MKS_VER))
# At this point, we can re-define FullPath to use DOSNAME_CMD
CHECK_MKS87:=$(call CheckVersions,$(MKS_VER),8.7)
TRY_DOSNAME:=false
ifeq ($(CHECK_MKS87),same)
TRY_DOSNAME:=true
endif
# Newer should be ok
ifeq ($(CHECK_MKS87),newer)
TRY_DOSNAME:=true
endif
ifeq ($(TRY_DOSNAME),true)
ifeq ($(shell $(UNIXCOMMAND_PATH)dosname -s $(_system_drive)/ 2> $(DEV_NULL)),$(_system_drive)/)
_DOSNAME=$(UNIXCOMMAND_PATH)dosname
DOSNAME_CMD:=$(_DOSNAME) -s
# Newer should be ok
ifeq ($(CHECK_MKS87),newer)
TRY_DOSNAME:=true
endif
ifeq ($(TRY_DOSNAME),true)
ifeq ($(shell $(UNIXCOMMAND_PATH)dosname -s $(_system_drive)/ 2> $(DEV_NULL)),$(_system_drive)/)
_DOSNAME=$(UNIXCOMMAND_PATH)dosname
DOSNAME_CMD:=$(_DOSNAME) -s
define FullPath
$(subst //,/,$(shell echo $1 | $(DOSNAME_CMD) 2> $(DEV_NULL)))
endef
endif # test dosname -s
endif # TRY_DOSNAME
endif # test dosname -s
endif # TRY_DOSNAME
endif # MKS
# We try to get references to what we need via the default component
@@ -240,6 +251,8 @@ endif
# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifndef DEVTOOLS_PATH
# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifdef ALT_DEVTOOLS_PATH
xALT_DEVTOOLS_PATH :="$(subst \,/,$(ALT_DEVTOOLS_PATH))"
fxALT_DEVTOOLS_PATH :=$(call FullPath,$(xALT_DEVTOOLS_PATH))
@@ -248,10 +261,14 @@ ifndef DEVTOOLS_PATH
ifdef USING_CYGWIN
DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
else
xDEVTOOLS_PATH :="$(_system_drive)/utils"
fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
DEVTOOLS_PATH :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
endif
ifdef USING_MSYS
DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
else
xDEVTOOLS_PATH :="$(_system_drive)/utils"
fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
DEVTOOLS_PATH :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
endif # USING_MSYS
endif # USING_CYGWIN
endif
DEVTOOLS_PATH:=$(call AltCheckSpaces,DEVTOOLS_PATH)
export DEVTOOLS_PATH

View File

@@ -65,6 +65,8 @@ PLATFORM_SHARED=done
# REQUIRED_WINDOWS_NAME windows only: basic name of windows
# REQUIRED_WINDOWS_VERSION windows only: specific version of windows
# USING_CYGWIN windows only: true or false
# USING_MSYS windows only: true or false
# USING_MKS windows only: true or false
# WINDOWS_NT_VERSION_STRING windows only: long version name
# REQUIRED_OS_VERSION required OS version, e.g. 5.10, 2.4
# REQUIRED_FREE_SPACE minimum disk space needed for outputdir
@@ -327,6 +329,8 @@ endif
# Windows with and without CYGWIN will be slightly different
ifeq ($(SYSTEM_UNAME), Windows_NT)
PLATFORM = windows
USING_MKS = true
export USING_MKS
OS_VERSION := $(shell uname -r)
WINDOWS_NT_VERSION_STRING=Windows_NT
REQUIRED_MKS_VER=6.1
@@ -339,6 +343,11 @@ ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
WINDOWS_NT_VERSION_STRING=CYGWIN_NT
REQUIRED_CYGWIN_VER=4.0
endif
ifneq (,$(findstring MINGW,$(SYSTEM_UNAME)))
PLATFORM = windows
USING_MSYS = true
export USING_MSYS
endif
# Platform settings specific to Windows
ifeq ($(PLATFORM), windows)

View File

@@ -48,10 +48,8 @@ $(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
FLAGS:=$(BOOT_JDK_SOURCETARGET) -bootclasspath $(BOOT_RTJAR) $(DISABLE_CORBA_WARNINGS),\
SERVER_DIR:=$(JAVAC_SERVERS),\
SERVER_JVM:=$(SERVER_JAVA),\
MODE:=$(JAVAC_USE_MODE),\
USE_DEPS:=$(JAVAC_USE_DEPS)))
SERVER_DIR:=$(SJAVAC_SERVER_DIR),\
SERVER_JVM:=$(SJAVAC_SERVER_JAVA)))
# The "generate new bytecode" uses the new compiler to generate bytecode
# for the new jdk that is being built. The code compiled by this setup
@@ -59,13 +57,9 @@ $(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE,\
$(eval $(call SetupJavaCompiler,GENERATE_NEWBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
FLAGS:=-Xprefer:source -XDignore.symbol.file=true \
-cp $(BOOT_JDK)/lib/tools.jar \
$(DISABLE_CORBA_WARNINGS),\
SERVER_DIR:=$(JAVAC_SERVERS),\
SERVER_JVM:=$(SERVER_JAVA),\
MODE:=$(JAVAC_USE_MODE),\
USE_DEPS:=$(JAVAC_USE_DEPS)))
FLAGS:=-cp $(BOOT_TOOLSJAR) -XDignore.symbol.file=true $(DISABLE_CORBA_WARNINGS),\
SERVER_DIR:=$(SJAVAC_SERVER_DIR),\
SERVER_JVM:=$(SJAVAC_SERVER_JAVA)))
$(eval $(call SetupJavaCompilation,BUILD_STRIPPROP,\
SETUP:=GENERATE_OLDBYTECODE,\

View File

@@ -1631,7 +1631,7 @@ public class StubGenerator extends sun.rmi.rmic.iiop.Generator {
// Write data members...
p.pln();
p.pln("private " + getName(theType) + " target = null;");
p.pln("volatile private " + getName(theType) + " target = null;");
p.pln();
// Write the ids...
@@ -1695,6 +1695,10 @@ public class StubGenerator extends sun.rmi.rmic.iiop.Generator {
if (remoteMethods.length > 0) {
p.plnI("try {");
p.pln(getName(theType) + " target = this.target;");
p.plnI("if (target == null) {");
p.pln("throw new java.io.IOException();");
p.pOln("}");
p.plnI(idExtInputStream + " "+in+" = ");
p.pln("(" + idExtInputStream + ") "+_in+";");
p.pO();

View File

@@ -274,3 +274,16 @@ e3619706a7253540a2d94e9e841acaab8ace7038 jdk8-b49
9e3ae661284dc04185b029d85440fe7811f1ed07 hs24-b21
e8fb566b94667f88462164defa654203f0ab6820 jdk8-b54
09ea7e0752b306b8ae74713aeb4eb6263e1c6836 hs24-b22
af0c8a0808516317333dcf9af15567cdd52761ce jdk8-b55
6124ff4218296c91e4a72f1a76c064892d39d61b jdk8-b56
9b076bc3ab67d42d1d02144ef8dcd6006a7fc0d6 hs25-b01
d70102c4cb73158902acaa6016f47c7bc14e0d67 jdk8-b57
5f54277c67f755a377999bff904ab48aa63ddaf9 hs25-b02
6bb378c50828e9d76fb2653d1712c66ea8fc47db jdk8-b58
f2e12eb74117c917c0bb264694c02de4a6a15a10 hs25-b03
8a1a6b9b4f20fd2f6a12441d638e51f19a82db19 jdk8-b59
1cc7a2a11d00832e3d07f81f3744a6883422db7e hs25-b04
3cfd05b2219a29649741a52637696f06acf24a4e jdk8-b60
b261523fe66c40a02968f0aa7e73602491bb3386 hs25-b05
4547dc71db765276e027b0c2780b724bae0a07d3 jdk8-b61
d0337c31c8be7716369b4e7c3bd5f352983c6a06 hs25-b06

View File

@@ -38,10 +38,10 @@ Available commands:
assert true | false <font color="red">turn on/off asserts in SA code</font>
attach pid | exec core <font color="red">attach SA to a process or core</font>
class name <font color="red">find a Java class from debuggee and print oop</font>
classes <font color="red">print all loaded Java classes with klassOop</font>
classes <font color="red">print all loaded Java classes with Klass*</font>
detach <font color="red">detach SA from current target</font>
dis address [ length ] <font color="red">disassemble (sparc/x86) specified number of instructions from given address</font>
dumpclass { address | name } [ directory ] <font color="red">dump .class file for given klassOop or class name</font>
dumpclass { address | name } [ directory ] <font color="red">dump .class file for given Klass* or class name</font>
dumpheap [ file ] <font color="red">dump heap in hprof binary format</font>
echo [ true | false ] <font color="red">turn on/off command echo mode</font>
examine [ address/count ] | [ address,address] <font color="red">show contents of memory from given address</font>
@@ -51,7 +51,7 @@ Available commands:
help [ command ] <font color="red">print help message for all commands or just given command</font>
history <font color="red">show command history. usual !command-number syntax works.</font>
inspect expression <font color="red">inspect a given oop</font>
jdis address <font color="red">show bytecode disassembly of a given methodOop</font>
jdis address <font color="red">show bytecode disassembly of a given Method*</font>
jhisto <font color="red">show Java heap histogram</font>
jseval script <font color="red">evaluate a given string as JavaScript code</font>
jsload file <font color="red">load and evaluate a JavaScript file</font>
@@ -59,7 +59,7 @@ Available commands:
livenmethods <font color="red">show all live nmethods</font>
mem address [ length ] <font color="red">show contents of memory -- also shows closest ELF/COFF symbol if found</font>
pmap <font color="red">show Solaris pmap-like output</font>
print expression <font color="red">print given klassOop, methodOop or arbitrary address</font>
print expression <font color="red">print given Klass*, Method* or arbitrary address</font>
printas type expression <font color="red">print given address as given HotSpot type. eg. print JavaThread &lt;address&gt;</font>
printstatics [ type ] <font color="red">print static fields of given HotSpot type (or all types if none specified)</font>
pstack [-v] <font color="red">show mixed mode stack trace for all Java, non-Java threads. -v is verbose mode</font>

View File

@@ -1,254 +0,0 @@
/*
* Copyright (c) 2003, 2004, 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.
*
* 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.
*
*/
import java.io.*;
import java.util.*;
/**
<p> This class finds transitive closure of dependencies from a given
root set of classes. If your project has lots of .class files and you
want to ship only those .class files which are used (transitively)
from a root set of classes, then you can use this utility. </p> <p>
How does it work?</p>
<p> We walk through all constant pool entries of a given class and
find all modified UTF-8 entries. Anything that looks like a class name is
considered as a class and we search for that class in the given
classpath. If we find a .class of that name, then we add that class to
list.</p>
<p> We could have used CONSTANT_ClassInfo type constants only. But
that will miss classes used through Class.forName or xyz.class
construct. But, if you refer to a class name in some other string we
would include it as dependency :(. But this is quite unlikely
anyway. To look for exact Class.forName argument(s) would involve
bytecode analysis. Also, we handle only simple reflection. If you
accept name of a class from externally (for eg properties file or
command line args for example, this utility will not be able to find
that dependency. In such cases, include those classes in the root set.
</p>
*/
public class ClosureFinder {
private Collection roots; // root class names Collection<String>
private Map visitedClasses; // set of all dependencies as a Map
private String classPath; // classpath to look for .class files
private String[] pathComponents; // classpath components
private static final boolean isWindows = File.separatorChar != '/';
public ClosureFinder(Collection roots, String classPath) {
this.roots = roots;
this.classPath = classPath;
parseClassPath();
}
// parse classPath into pathComponents array
private void parseClassPath() {
List paths = new ArrayList();
StringTokenizer st = new StringTokenizer(classPath, File.pathSeparator);
while (st.hasMoreTokens())
paths.add(st.nextToken());
Object[] arr = paths.toArray();
pathComponents = new String[arr.length];
System.arraycopy(arr, 0, pathComponents, 0, arr.length);
}
// if output is aleady not computed, compute it now
// result is a map from class file name to base path where the .class was found
public Map find() {
if (visitedClasses == null) {
visitedClasses = new HashMap();
computeClosure();
}
return visitedClasses;
}
// compute closure for all given root classes
private void computeClosure() {
for (Iterator rootsItr = roots.iterator(); rootsItr.hasNext();) {
String name = (String) rootsItr.next();
name = name.substring(0, name.indexOf(".class"));
computeClosure(name);
}
}
// looks up for .class in pathComponents and returns
// base path if found, else returns null
private String lookupClassFile(String classNameAsPath) {
for (int i = 0; i < pathComponents.length; i++) {
File f = new File(pathComponents[i] + File.separator +
classNameAsPath + ".class");
if (f.exists()) {
if (isWindows) {
String name = f.getName();
// Windows reports special devices AUX,NUL,CON as files
// under any directory. It does not care about file extention :-(
if (name.compareToIgnoreCase("AUX.class") == 0 ||
name.compareToIgnoreCase("NUL.class") == 0 ||
name.compareToIgnoreCase("CON.class") == 0) {
return null;
}
}
return pathComponents[i];
}
}
return null;
}
// from JVM spec. 2'nd edition section 4.4
private static final int CONSTANT_Class = 7;
private static final int CONSTANT_FieldRef = 9;
private static final int CONSTANT_MethodRef = 10;
private static final int CONSTANT_InterfaceMethodRef = 11;
private static final int CONSTANT_String = 8;
private static final int CONSTANT_Integer = 3;
private static final int CONSTANT_Float = 4;
private static final int CONSTANT_Long = 5;
private static final int CONSTANT_Double = 6;
private static final int CONSTANT_NameAndType = 12;
private static final int CONSTANT_Utf8 = 1;
// whether a given string may be a class name?
private boolean mayBeClassName(String internalClassName) {
int len = internalClassName.length();
for (int s = 0; s < len; s++) {
char c = internalClassName.charAt(s);
if (!Character.isJavaIdentifierPart(c) && c != '/')
return false;
}
return true;
}
// compute closure for a given class
private void computeClosure(String className) {
if (visitedClasses.get(className) != null) return;
String basePath = lookupClassFile(className);
if (basePath != null) {
visitedClasses.put(className, basePath);
try {
File classFile = new File(basePath + File.separator + className + ".class");
FileInputStream fis = new FileInputStream(classFile);
DataInputStream dis = new DataInputStream(fis);
// look for .class signature
if (dis.readInt() != 0xcafebabe) {
System.err.println(classFile.getAbsolutePath() + " is not a valid .class file");
return;
}
// ignore major and minor version numbers
dis.readShort();
dis.readShort();
// read number of constant pool constants
int numConsts = (int) dis.readShort();
String[] strings = new String[numConsts];
// zero'th entry is unused
for (int cpIndex = 1; cpIndex < numConsts; cpIndex++) {
int constType = (int) dis.readByte();
switch (constType) {
case CONSTANT_Class:
case CONSTANT_String:
dis.readShort(); // string name index;
break;
case CONSTANT_FieldRef:
case CONSTANT_MethodRef:
case CONSTANT_InterfaceMethodRef:
case CONSTANT_NameAndType:
case CONSTANT_Integer:
case CONSTANT_Float:
// all these are 4 byte constants
dis.readInt();
break;
case CONSTANT_Long:
case CONSTANT_Double:
// 8 byte constants
dis.readLong();
// occupies 2 cp entries
cpIndex++;
break;
case CONSTANT_Utf8: {
strings[cpIndex] = dis.readUTF();
break;
}
default:
System.err.println("invalid constant pool entry");
return;
}
}
// now walk thru the string constants and look for class names
for (int s = 0; s < numConsts; s++) {
if (strings[s] != null && mayBeClassName(strings[s]))
computeClosure(strings[s].replace('/', File.separatorChar));
}
} catch (IOException exp) {
// ignore for now
}
}
}
// a sample main that accepts roots classes in a file and classpath as args
public static void main(String[] args) {
if (args.length != 2) {
System.err.println("Usage: ClosureFinder <root class file> <class path>");
System.exit(1);
}
List roots = new ArrayList();
try {
FileInputStream fis = new FileInputStream(args[0]);
DataInputStream dis = new DataInputStream(fis);
String line = null;
while ((line = dis.readLine()) != null) {
if (isWindows) {
line = line.replace('/', File.separatorChar);
}
roots.add(line);
}
} catch (IOException exp) {
System.err.println(exp.getMessage());
System.exit(2);
}
ClosureFinder cf = new ClosureFinder(roots, args[1]);
Map out = cf.find();
Iterator res = out.keySet().iterator();
for(; res.hasNext(); ) {
String className = (String) res.next();
System.out.println(className + ".class");
}
}
}

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2000, 2012, 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
@@ -41,10 +41,7 @@ endif
PKGLIST = \
sun.jvm.hotspot \
sun.jvm.hotspot.asm \
sun.jvm.hotspot.asm.amd64 \
sun.jvm.hotspot.asm.ia64 \
sun.jvm.hotspot.asm.sparc \
sun.jvm.hotspot.asm.x86 \
sun.jvm.hotspot.bugspot \
sun.jvm.hotspot.bugspot.tree \
sun.jvm.hotspot.c1 \
@@ -138,10 +135,7 @@ com.sun.java.swing.ui
FILELIST = \
sun/jvm/hotspot/*.java \
sun/jvm/hotspot/asm/*.java \
sun/jvm/hotspot/asm/amd64/*.java \
sun/jvm/hotspot/asm/ia64/*.java \
sun/jvm/hotspot/asm/sparc/*.java \
sun/jvm/hotspot/asm/x86/*.java \
sun/jvm/hotspot/bugspot/*.java \
sun/jvm/hotspot/bugspot/tree/*.java \
sun/jvm/hotspot/c1/*.java \

View File

@@ -1,6 +1,6 @@
#!/bin/sh
#
# Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2003, 2012, 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

View File

@@ -1,6 +1,6 @@
#!/bin/sh
#
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2002, 2012, 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

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2007, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2012, 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
@@ -31,7 +31,13 @@
#import <mach/mach.h>
#import <mach/mach_types.h>
#import <sys/sysctl.h>
#import <stdio.h>
#import <stdarg.h>
#import <stdlib.h>
#import <strings.h>
#import <dlfcn.h>
#import <limits.h>
#import <errno.h>
jboolean debug = JNI_FALSE;
@@ -60,6 +66,9 @@ static task_t getTask(JNIEnv *env, jobject this_obj) {
#define CHECK_EXCEPTION if ((*env)->ExceptionOccurred(env)) { return;}
#define THROW_NEW_DEBUGGER_EXCEPTION_(str, value) { throw_new_debugger_exception(env, str); return value; }
#define THROW_NEW_DEBUGGER_EXCEPTION(str) { throw_new_debugger_exception(env, str); return;}
#define CHECK_EXCEPTION_CLEAR if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); }
#define CHECK_EXCEPTION_CLEAR_VOID if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return; }
#define CHECK_EXCEPTION_CLEAR_(value) if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return value; }
static void throw_new_debugger_exception(JNIEnv* env, const char* errMsg) {
(*env)->ThrowNew(env, (*env)->FindClass(env, "sun/jvm/hotspot/debugger/DebuggerException"), errMsg);
@@ -404,3 +413,164 @@ JNF_COCOA_ENTER(env);
}
JNF_COCOA_EXIT(env);
}
/*
* Class: sun_jvm_hotspot_asm_Disassembler
* Method: load_library
* Signature: (Ljava/lang/String;)L
*/
JNIEXPORT jlong JNICALL Java_sun_jvm_hotspot_asm_Disassembler_load_1library(JNIEnv * env,
jclass disclass,
jstring jrepath_s,
jstring libname_s) {
uintptr_t func = 0;
const char* error_message = NULL;
const char* java_home;
jboolean isCopy;
uintptr_t *handle = NULL;
const char * jrepath = (*env)->GetStringUTFChars(env, jrepath_s, &isCopy); // like $JAVA_HOME/jre/lib/sparc/
const char * libname = (*env)->GetStringUTFChars(env, libname_s, &isCopy);
char buffer[128];
/* Load the hsdis library */
void* hsdis_handle;
hsdis_handle = dlopen(libname, RTLD_LAZY | RTLD_GLOBAL);
if (hsdis_handle == NULL) {
snprintf(buffer, sizeof(buffer), "%s%s", jrepath, libname);
hsdis_handle = dlopen(buffer, RTLD_LAZY | RTLD_GLOBAL);
}
if (hsdis_handle != NULL) {
func = (uintptr_t)dlsym(hsdis_handle, "decode_instructions_virtual");
}
if (func == 0) {
error_message = dlerror();
fprintf(stderr, "%s\n", error_message);
}
(*env)->ReleaseStringUTFChars(env, libname_s, libname);
(*env)->ReleaseStringUTFChars(env, jrepath_s, jrepath);
if (func == 0) {
/* Couldn't find entry point. error_message should contain some
* platform dependent error message.
*/
THROW_NEW_DEBUGGER_EXCEPTION(error_message);
}
return (jlong)func;
}
/* signature of decode_instructions_virtual from hsdis.h */
typedef void* (*decode_func)(uintptr_t start_va, uintptr_t end_va,
unsigned char* start, uintptr_t length,
void* (*event_callback)(void*, const char*, void*),
void* event_stream,
int (*printf_callback)(void*, const char*, ...),
void* printf_stream,
const char* options);
/* container for call back state when decoding instructions */
typedef struct {
JNIEnv* env;
jobject dis;
jobject visitor;
jmethodID handle_event;
jmethodID raw_print;
char buffer[4096];
} decode_env;
/* event callback binding to Disassembler.handleEvent */
static void* event_to_env(void* env_pv, const char* event, void* arg) {
decode_env* denv = (decode_env*)env_pv;
JNIEnv* env = denv->env;
jstring event_string = (*env)->NewStringUTF(env, event);
jlong result = (*env)->CallLongMethod(env, denv->dis, denv->handle_event, denv->visitor,
event_string, (jlong) (uintptr_t)arg);
/* ignore exceptions for now */
CHECK_EXCEPTION_CLEAR_((void *)0);
return (void*)(uintptr_t)result;
}
/* printing callback binding to Disassembler.rawPrint */
static int printf_to_env(void* env_pv, const char* format, ...) {
jstring output;
va_list ap;
int cnt;
decode_env* denv = (decode_env*)env_pv;
JNIEnv* env = denv->env;
size_t flen = strlen(format);
const char* raw = NULL;
if (flen == 0) return 0;
if (flen < 2 ||
strchr(format, '%') == NULL) {
raw = format;
} else if (format[0] == '%' && format[1] == '%' &&
strchr(format+2, '%') == NULL) {
// happens a lot on machines with names like %foo
flen--;
raw = format+1;
}
if (raw != NULL) {
jstring output = (*env)->NewStringUTF(env, raw);
(*env)->CallVoidMethod(env, denv->dis, denv->raw_print, denv->visitor, output);
CHECK_EXCEPTION_CLEAR;
return (int) flen;
}
va_start(ap, format);
cnt = vsnprintf(denv->buffer, sizeof(denv->buffer), format, ap);
va_end(ap);
output = (*env)->NewStringUTF(env, denv->buffer);
(*env)->CallVoidMethod(env, denv->dis, denv->raw_print, denv->visitor, output);
CHECK_EXCEPTION_CLEAR;
return cnt;
}
/*
* Class: sun_jvm_hotspot_asm_Disassembler
* Method: decode
* Signature: (Lsun/jvm/hotspot/asm/InstructionVisitor;J[BLjava/lang/String;J)V
*/
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_asm_Disassembler_decode(JNIEnv * env,
jobject dis,
jobject visitor,
jlong startPc,
jbyteArray code,
jstring options_s,
jlong decode_instructions_virtual) {
jboolean isCopy;
jbyte* start = (*env)->GetByteArrayElements(env, code, &isCopy);
jbyte* end = start + (*env)->GetArrayLength(env, code);
const char * options = (*env)->GetStringUTFChars(env, options_s, &isCopy);
jclass disclass = (*env)->GetObjectClass(env, dis);
decode_env denv;
denv.env = env;
denv.dis = dis;
denv.visitor = visitor;
/* find Disassembler.handleEvent callback */
denv.handle_event = (*env)->GetMethodID(env, disclass, "handleEvent",
"(Lsun/jvm/hotspot/asm/InstructionVisitor;Ljava/lang/String;J)J");
CHECK_EXCEPTION_CLEAR_VOID
/* find Disassembler.rawPrint callback */
denv.raw_print = (*env)->GetMethodID(env, disclass, "rawPrint",
"(Lsun/jvm/hotspot/asm/InstructionVisitor;Ljava/lang/String;)V");
CHECK_EXCEPTION_CLEAR_VOID
/* decode the buffer */
(*(decode_func)(uintptr_t)decode_instructions_virtual)(startPc,
startPc + end - start,
(unsigned char*)start,
end - start,
&event_to_env, (void*) &denv,
&printf_to_env, (void*) &denv,
options);
/* cleanup */
(*env)->ReleaseByteArrayElements(env, code, start, JNI_ABORT);
(*env)->ReleaseStringUTFChars(env, options_s, options);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2012, 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
@@ -210,7 +210,6 @@ static map_info* core_lookup(struct ps_prochandle *ph, uintptr_t addr)
// mapped. This structure gets written to a file. It is not a class,
// so that the compilers don't add any compiler-private data to it.
// Refer to CompactingPermGenGen::n_regions in compactingPermGenGen.hpp
#define NUM_SHARED_MAPS 4
// Refer to FileMapInfo::_current_version in filemap.hpp
@@ -234,7 +233,7 @@ struct FileMapHeader {
char _read_only; // read only space?
char _allow_exec; // executable code in space?
} _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
} _space[NUM_SHARED_MAPS];
// Ignore the rest of the FileMapHeader. We don't need those fields here.
};

View File

@@ -36,25 +36,33 @@ SOURCES = salibelf.c \
INCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
OBJS = $(SOURCES:.c=.o)
OBJS = $(SOURCES:%.c=$(ARCH)/%.o) $(ARCH)/sadis.o
LIBS = -lthread_db
CFLAGS = -c -fPIC -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) -D_FILE_OFFSET_BITS=64
CFLAGS = -c -fPIC -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) -I$(ARCH)
LIBSA = $(ARCH)/libsaproc.so
all: $(LIBSA)
LinuxDebuggerLocal.o: LinuxDebuggerLocal.c
$(JAVAH) -jni -classpath ../../../build/classes \
$(ARCH):
mkdir $(ARCH)
$(ARCH)/LinuxDebuggerLocal.o: LinuxDebuggerLocal.c
$(JAVAH) -jni -classpath ../../../build/classes -d $(ARCH) \
sun.jvm.hotspot.debugger.x86.X86ThreadContext \
sun.jvm.hotspot.debugger.sparc.SPARCThreadContext \
sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext
$(GCC) $(CFLAGS) $<
$(GCC) $(CFLAGS) $< -o $@
.c.obj:
$(GCC) $(CFLAGS)
$(ARCH)/sadis.o: ../../share/native/sadis.c
$(JAVAH) -jni -classpath ../../../build/classes -d $(ARCH) \
sun.jvm.hotspot.asm.Disassembler
$(GCC) $(CFLAGS) $< -o $@
$(ARCH)/%.o: %.c
$(GCC) $(CFLAGS) $< -o $@
ifndef LDNOMAP
LFLAGS_LIBSA = -Xlinker --version-script=mapfile
@@ -68,9 +76,8 @@ ifneq ($(_HAS_HASH_STYLE_GNU),)
endif
LFLAGS_LIBSA += $(LDFLAGS_HASH_STYLE)
$(LIBSA): $(OBJS) mapfile
if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi
$(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
$(LIBSA): $(ARCH) $(OBJS) mapfile
$(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
test.o: test.c
$(GCC) -c -o test.o -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) test.c
@@ -79,7 +86,4 @@ test: test.o
$(GCC) -o test test.o -L$(ARCH) -lsaproc $(LIBS)
clean:
rm -rf $(LIBSA)
rm -rf $(OBJS)
rmdir $(ARCH)
rm -fr $(ARCH)

View File

@@ -1,7 +1,5 @@
#
#
# Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2003, 2012, 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
@@ -22,7 +20,6 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
#
# Define public interface.
@@ -40,6 +37,10 @@ SUNWprivate_1.1 {
Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_readBytesFromProcess0;
Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0;
# Disassembler interface
Java_sun_jvm_hotspot_asm_Disassembler_decode;
Java_sun_jvm_hotspot_asm_Disassembler_load_1library;
# proc_service.h functions - to be used by libthread_db
ps_getpid;
ps_pglobal_lookup;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2012, 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
@@ -209,7 +209,6 @@ static map_info* core_lookup(struct ps_prochandle *ph, uintptr_t addr)
// mapped. This structure gets written to a file. It is not a class,
// so that the compilers don't add any compiler-private data to it.
// Refer to CompactingPermGenGen::n_regions in compactingPermGenGen.hpp
#define NUM_SHARED_MAPS 4
// Refer to FileMapInfo::_current_version in filemap.hpp
@@ -233,7 +232,7 @@ struct FileMapHeader {
char _read_only; // read only space?
char _allow_exec; // executable code in space?
} _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
} _space[NUM_SHARED_MAPS];
// Ignore the rest of the FileMapHeader. We don't need those fields here.
};

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2002, 2012, 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
@@ -27,7 +27,7 @@
# sparcv9: Build the 64 bit sparcv9 version in ./sparcv9
# i386: Build the 32 bit i386 version in ./i386
.PHONY: sparc sparcv9 i386
.PHONY: sparc sparcv9 i386 amd64
ARCH_ORIG = $(shell uname -p)
@@ -36,6 +36,8 @@ RM := /usr/bin/rm
MKDIRS := /usr/bin/mkdir -p
CLASSES_DIR = ../../../../build/classes
SAPROC_INCLUDES=-I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris
SADIS=../../../share/native/sadis.c
ifeq "$(ARCH_ORIG)" "i386"
ALL_TARGET = i386 $(filter amd64,$(shell isalist))
@@ -43,6 +45,11 @@ else
ALL_TARGET = sparc sparcv9
endif
CFLAGS/i386 =
CFLAGS/amd64 = -xarch=amd64
CFLAGS/sparc = -xarch=v8
CFLAGS/sparv9 = -xarch=v9
all:: $(ALL_TARGET)
javahomecheck::
@@ -51,34 +58,13 @@ javahomecheck::
exit 1 ; \
fi
i386:: javahomecheck
i386 amd64 sparc sparcv9:: javahomecheck
$(MKDIRS) $@
@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
CC -G -KPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-M mapfile -o $@/libsaproc.so -ldemangle
CC -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc
amd64:: javahomecheck
$(MKDIRS) $@
@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
CC -G -KPIC -xarch=amd64 -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-M mapfile -o $@/libsaproc.so -ldemangle
CC -xarch=amd64 -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc
sparc:: javahomecheck
$(MKDIRS) $@
@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
CC -G -KPIC -xarch=v8 -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-M mapfile -o $@/libsaproc.so -ldemangle
CC -xarch=v8 -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc
sparcv9:: javahomecheck
$(MKDIRS) $@
@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
CC -G -KPIC -xarch=v9 -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-M mapfile -o $@/libsaproc.so -ldemangle
CC -xarch=v9 -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc
@$(JAVA_HOME)/bin/javah -classpath $(CLASSES_DIR) -d $@ -jni sun.jvm.hotspot.asm.Disassembler sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
CC $(CFLAGS/$@) -c -g -Kpic ${SAPROC_INCLUDES} -I$@ saproc.cpp -o $@/saproc.o
cc $(CFLAGS/$@) -c -g -Kpic ${SAPROC_INCLUDES} -I$@ $(SADIS) -o $@/sadis.o
CC $(CFLAGS/$@) -g -G -Kpic $@/saproc.o $@/sadis.o -M mapfile -o $@/libsaproc.so -ldemangle
CC $(CFLAGS/$@) -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc
clean::
$(RM) -rf sun_jvm_hotspot_debugger_proc_ProcDebuggerLocal.h
$(RM) -rf sparc sparcv9 i386
$(RM) -rf sparc sparcv9 i386 amd64

View File

@@ -1,7 +1,5 @@
#
#
# Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2003, 2012, 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
@@ -22,10 +20,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
#
# Define public interface.
SUNWprivate_1.1 {
global:
Java_sun_jvm_hotspot_debugger_proc_ProcDebuggerLocal_attach0__Ljava_lang_String_2;
@@ -47,6 +43,9 @@ SUNWprivate_1.1 {
Java_sun_jvm_hotspot_debugger_proc_ProcDebuggerLocal_writeBytesToProcess0;
# this is needed by saproc_audit.c to redirect opens in libproc.so
libsaproc_open;
local:
# Disassembler interface
Java_sun_jvm_hotspot_asm_Disassembler_decode;
Java_sun_jvm_hotspot_asm_Disassembler_load_1library;
local:
*;
};

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2012, 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
@@ -510,7 +510,6 @@ wrapper_fill_cframe_list(void *cd, const prgregset_t regs, uint_t argc,
// mapped. This structure gets written to a file. It is not a class, so
// that the compilers don't add any compiler-private data to it.
// Refer to CompactingPermGenGen::n_regions in compactingPermGenGen.hpp
const int NUM_SHARED_MAPS = 4;
// Refer to FileMapInfo::_current_version in filemap.hpp
@@ -531,7 +530,7 @@ struct FileMapHeader {
bool _read_only; // read only space?
bool _allow_exec; // executable code in space?
} _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
} _space[NUM_SHARED_MAPS];
// Ignore the rest of the FileMapHeader. We don't need those fields here.
};

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,8 @@ WINDBG_LIB32=$(WINDBG_HOME)/sdk/lib/i386
WINDBG_LIB_IA64=$(WINDBG_HOME)/sdk/lib/ia64
WINDBG_LIB_AMD64=$(WINDBG_HOME)/sdk/lib/amd64
SADIS=../../../share/native/sadis.c
# These do not need to be optimized (don't run a lot of code) and it
# will be useful to have the assertion checks in place
@@ -57,23 +59,29 @@ ia64: ia64/$(SAWINDBGDLL)
amd64: amd64/$(SAWINDBGDLL)
i386/$(SAWINDBGDLL) : sawindbg.cpp
i386/$(SAWINDBGDLL) : sawindbg.cpp $(SADIS)
@ mkdir -p i386
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.x86.X86ThreadContext
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.x86.X86ThreadContext
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.asm.Disassembler
@ $(CPP32) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS32) /Fp"i386/sawindbg.pch" /Fo"i386/" /Fd"i386/" /c sawindbg.cpp
$(LINK32) /out:$@ /DLL i386/sawindbg.obj $(LIBS32)
@ $(CPP32) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS32) /Fp"i386/sadis.pch" /Fo"i386/" /Fd"i386/" /c $(SADIS)
$(LINK32) /out:$@ /DLL i386/sawindbg.obj i386/sadis.obj $(LIBS32)
ia64/$(SAWINDBGDLL) : sawindbg.cpp
ia64/$(SAWINDBGDLL) : sawindbg.cpp $(SADIS)
@ mkdir -p ia64
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.ia64.IA64ThreadContext
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.asm.Disassembler
@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"ia64/sawindbg.pch" /Fo"ia64/" /Fd"ia64/" /c sawindbg.cpp
$(LINK64) /out:$@ /DLL ia64/sawindbg.obj $(LIBS_IA64)
@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"ia64/sadis.pch" /Fo"ia64/" /Fd"ia64/" /c $(SADIS)
$(LINK64) /out:$@ /DLL ia64/sawindbg.obj ia64/sadis.obj $(LIBS_IA64)
amd64/$(SAWINDBGDLL) : sawindbg.cpp
amd64/$(SAWINDBGDLL) : sawindbg.cpp $(SADIS)
@ mkdir -p amd64
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext
@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.asm.Disassembler
@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"amd64/sawindbg.pch" /Fo"amd64/" /Fd"amd64/" /c sawindbg.cpp
$(LINK64) /out:$@ /DLL amd64/sawindbg.obj $(LIBS_AMD64)
@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"amd64/sadis.pch" /Fo"amd64/" /Fd"amd64/" /c $(SADIS)
$(LINK64) /out:$@ /DLL amd64/sawindbg.obj amd64/sadis.obj $(LIBS_AMD64)
clean:
rm *.h

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2012, 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
@@ -42,6 +42,7 @@ import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.opto.*;
import sun.jvm.hotspot.ci.*;
import sun.jvm.hotspot.asm.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.utilities.*;
import sun.jvm.hotspot.utilities.soql.*;
@@ -564,6 +565,71 @@ public class CommandProcessor {
}
}
},
// decode raw address
new Command("dis", "dis address [length]", false) {
public void doit(Tokens t) {
int tokens = t.countTokens();
if (tokens != 1 && tokens != 2) {
usage();
return;
}
String name = t.nextToken();
Address addr = null;
int len = 0x10; // default length
try {
addr = VM.getVM().getDebugger().parseAddress(name);
} catch (NumberFormatException e) {
out.println(e);
return;
}
if (tokens == 2) {
try {
len = Integer.parseInt(t.nextToken());
} catch (NumberFormatException e) {
out.println(e);
return;
}
}
HTMLGenerator generator = new HTMLGenerator(false);
out.println(generator.genHTMLForRawDisassembly(addr, len));
}
},
// decode codeblob or nmethod
new Command("disassemble", "disassemble address", false) {
public void doit(Tokens t) {
int tokens = t.countTokens();
if (tokens != 1) {
usage();
return;
}
String name = t.nextToken();
Address addr = null;
try {
addr = VM.getVM().getDebugger().parseAddress(name);
} catch (NumberFormatException e) {
out.println(e);
return;
}
HTMLGenerator generator = new HTMLGenerator(false);
out.println(generator.genHTML(addr));
}
},
// print Java bytecode disassembly
new Command("jdis", "jdis address", false) {
public void doit(Tokens t) {
int tokens = t.countTokens();
if (tokens != 1) {
usage();
return;
}
Address a = VM.getVM().getDebugger().parseAddress(t.nextToken());
Method m = (Method)Metadata.instantiateWrapperFor(a);
HTMLGenerator html = new HTMLGenerator(false);
out.println(html.genHTML(m));
}
},
new Command("revptrs", "revptrs address", false) {
public void doit(Tokens t) {
int tokens = t.countTokens();
@@ -634,29 +700,57 @@ public class CommandProcessor {
} else {
String s = t.nextToken();
if (s.equals("-a")) {
HeapVisitor iterator = new DefaultHeapVisitor() {
public boolean doObj(Oop obj) {
if (obj instanceof MethodData) {
Method m = ((MethodData)obj).getMethod();
out.println("MethodData " + obj.getHandle() + " for " +
SystemDictionary sysDict = VM.getVM().getSystemDictionary();
sysDict.allClassesDo(new SystemDictionary.ClassVisitor() {
public void visit(Klass k) {
if (k instanceof InstanceKlass) {
MethodArray methods = ((InstanceKlass)k).getMethods();
for (int i = 0; i < methods.length(); i++) {
Method m = methods.at(i);
MethodData mdo = m.getMethodData();
if (mdo != null) {
out.println("MethodData " + mdo.getAddress() + " for " +
"method " + m.getMethodHolder().getName().asString() + "." +
m.getName().asString() +
m.getSignature().asString() + "@" + m.getHandle());
((MethodData)obj).printDataOn(out);
m.getSignature().asString() + "@" + m.getAddress());
mdo.printDataOn(out);
}
return false;
}
};
VM.getVM().getObjectHeap().iteratePerm(iterator);
}
}
}
);
} else {
Address a = VM.getVM().getDebugger().parseAddress(s);
OopHandle handle = a.addOffsetToAsOopHandle(0);
MethodData mdo = (MethodData)VM.getVM().getObjectHeap().newOop(handle);
MethodData mdo = (MethodData) Metadata.instantiateWrapperFor(a);
mdo.printDataOn(out);
}
}
}
},
new Command("printall", "printall", false) {
// Print every MDO in the heap or the one referenced by expression.
public void doit(Tokens t) {
if (t.countTokens() != 0) {
usage();
} else {
SystemDictionary sysDict = VM.getVM().getSystemDictionary();
sysDict.allClassesDo(new SystemDictionary.ClassVisitor() {
public void visit(Klass k) {
if (k instanceof InstanceKlass && ((InstanceKlass)k).getConstants().getCache() != null) {
MethodArray methods = ((InstanceKlass)k).getMethods();
for (int i = 0; i < methods.length(); i++) {
Method m = methods.at(i);
HTMLGenerator gen = new HTMLGenerator(false);
out.println(gen.genHTML(m));
}
}
}
}
);
}
}
},
new Command("dumpideal", "dumpideal { -a | id }", false) {
// Do a full dump of the nodes reachabile from root in each compiler thread.
public void doit(Tokens t) {
@@ -1229,7 +1323,7 @@ public class CommandProcessor {
}
};
VM.getVM().getObjectHeap().iterateRaw(iterator);
} else if (type.equals("heap") || type.equals("perm")) {
} else if (type.equals("heap")) {
HeapVisitor iterator = new DefaultHeapVisitor() {
public boolean doObj(Oop obj) {
int index = 0;
@@ -1246,11 +1340,7 @@ public class CommandProcessor {
return false;
}
};
if (type.equals("heap")) {
VM.getVM().getObjectHeap().iterate(iterator);
} else {
VM.getVM().getObjectHeap().iteratePerm(iterator);
}
} else if (type.equals("codecache")) {
CodeCacheVisitor v = new CodeCacheVisitor() {
public void prologue(Address start, Address end) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2012, 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
@@ -998,7 +998,7 @@ public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
curFrame.addressOfInterpreterFrameLocal((int) interpreterFrameMethod.getMaxLocals() + offset),
"Interpreter locals area for frame with SP = " + curFrame.getSP()));
}
String methodAnno = "Interpreter frame methodOop";
String methodAnno = "Interpreter frame Method*";
if (interpreterFrameMethod == null) {
methodAnno += " (BAD OOP)";
}
@@ -1054,13 +1054,6 @@ public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
}
}
if (bad) {
// Try perm gen
if (heap.permGen().isIn(handle)) {
anno = "PermGen ";
bad = false;
}
}
} else if (collHeap instanceof ParallelScavengeHeap) {
ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
if (heap.youngGen().isIn(handle)) {
@@ -1069,9 +1062,6 @@ public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
} else if (heap.oldGen().isIn(handle)) {
anno = "PSOldGen ";
bad = false;
} else if (heap.permGen().isIn(handle)) {
anno = "PSPermGen ";
bad = false;
}
} else {
// Optimistically assume the oop isn't bad

View File

@@ -43,10 +43,6 @@ import sun.jvm.hotspot.utilities.*;
* highest-level factory for VM data structures. It makes it simple
* to start up the debugging system. </P>
*
* <P> FIXME: need to add a way to configure the paths to dbx and the
* DSO from the outside. However, this should work for now for
* internal use. </P>
*
* <P> FIXME: especially with the addition of remote debugging, this
* has turned into a mess; needs rethinking. </P>
*/
@@ -87,30 +83,7 @@ public class HotSpotAgent {
private String[] jvmLibNames;
// FIXME: make these configurable, i.e., via a dotfile; also
// consider searching within the JDK from which this Java executable
// comes to find them
private static final String defaultDbxPathPrefix = "/net/jano.sfbay/export/disk05/hotspot/sa";
private static final String defaultDbxSvcAgentDSOPathPrefix = "/net/jano.sfbay/export/disk05/hotspot/sa";
static void showUsage() {
System.out.println(" You can also pass these -D options to java to specify where to find dbx and the \n" +
" Serviceability Agent plugin for dbx:");
System.out.println(" -DdbxPathName=<path-to-dbx-executable>\n" +
" Default is derived from dbxPathPrefix");
System.out.println(" or");
System.out.println(" -DdbxPathPrefix=<xxx>\n" +
" where xxx is the path name of a dir structure that contains:\n" +
" <os>/<arch>/bin/dbx\n" +
" The default is " + defaultDbxPathPrefix);
System.out.println(" and");
System.out.println(" -DdbxSvcAgentDSOPathName=<path-to-dbx-serviceability-agent-module>\n" +
" Default is determined from dbxSvcAgentDSOPathPrefix");
System.out.println(" or");
System.out.println(" -DdbxSvcAgentDSOPathPrefix=<xxx>\n" +
" where xxx is the pathname of a dir structure that contains:\n" +
" <os>/<arch>/bin/lib/libsvc_agent_dbx.so\n" +
" The default is " + defaultDbxSvcAgentDSOPathPrefix);
}
public HotSpotAgent() {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2012, 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
@@ -50,6 +50,7 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
private static final int C_INT8_SIZE = 1;
private static final int C_INT32_SIZE = 4;
private static final int C_INT64_SIZE = 8;
private static int pointerSize = UNINITIALIZED_SIZE;
private static final boolean DEBUG;
static {
@@ -185,6 +186,9 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
long size = entryAddr.getCIntegerAt(typeEntrySizeOffset, C_INT64_SIZE, true);
createType(typeName, superclassName, isOopType, isIntegerType, isUnsigned, size);
if (pointerSize == UNINITIALIZED_SIZE && typeName.equals("void*")) {
pointerSize = (int)size;
}
}
entryAddr = entryAddr.addOffsetTo(typeEntryArrayStride);
@@ -678,7 +682,11 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
}
}
result = new BasicPointerType(this, typeName, targetType);
result.setSize(UNINITIALIZED_SIZE);
if (pointerSize == UNINITIALIZED_SIZE && !typeName.equals("void*")) {
// void* must be declared early so that other pointer types can use that to set their size.
throw new InternalError("void* type hasn't been seen when parsing " + typeName);
}
result.setSize(pointerSize);
addType(result);
return result;
}
@@ -731,9 +739,11 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
"had its size redefined (old was " + curType.getSize() + ", new is " + size + ").");
}
if (!typeNameIsPointerType(typeName)) {
System.err.println("Warning: the type \"" + typeName + "\" (declared in the remote VM in VMStructs::localHotSpotVMTypes) " +
"had its size declared as " + size + " twice. Continuing.");
}
}
}

View File

@@ -1,207 +0,0 @@
/*
* Copyright (c) 2000, 2011, 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.
*
* 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 sun.jvm.hotspot;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.proc.*;
// A test of the debugger backend. This should be used to connect to
// the helloWorld.cpp program.
public class TestDebugger {
private static void usage() {
System.out.println("usage: java TestDebugger [pid]");
System.out.println("pid must be the process ID of the helloWorld process");
System.exit(1);
}
public static void main(String[] args) {
try {
if (args.length != 1) {
usage();
}
int pid = 0;
try {
pid = Integer.parseInt(args[0]);
}
catch (NumberFormatException e) {
usage();
}
JVMDebugger debugger = new ProcDebuggerLocal(null, true);
try {
debugger.attach(pid);
}
catch (DebuggerException e) {
System.err.print("Error attaching to process ID " + pid + ": ");
if (e.getMessage() != null) {
System.err.print(e.getMessage());
}
System.err.println();
System.exit(1);
}
// HACK: configure debugger with primitive type sizes to get
// Java types going
debugger.configureJavaPrimitiveTypeSizes(1, 1, 2, 8, 4, 4, 8, 2);
// FIXME: figure out how to canonicalize and/or eliminate
// loadobject specification
String loadObjectName = "-";
// long strAddr = debugger.lookup("helloWorld", "helloWorldString");
Address addr = debugger.lookup(loadObjectName, "helloWorldString");
if (addr == null) {
System.err.println("Error looking up symbol \"helloWorldString\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
// This is a pointer which points to the start of storage.
// Dereference it.
addr = addr.getAddressAt(0);
// Read the number of bytes we know we need
int helloWorldLen = 13;
byte[] data = new byte[helloWorldLen];
for (int i = 0; i < helloWorldLen; ++i) {
data[i] = (byte) addr.getCIntegerAt(i, 1, false);
}
// Convert to characters
char[] chars = new char[data.length];
for (int i = 0; i < data.length; ++i) {
chars[i] = (char) data[i];
}
String helloWorldStr = new String(chars);
System.out.println("Successfully read string \"" + helloWorldStr + "\" from target process\n");
// Test all Java data types (see helloWorld.cpp)
byte expectedByteValue = (byte) 132;
short expectedShortValue = (short) 27890;
int expectedIntValue = 1020304050;
long expectedLongValue = 102030405060708090L;
float expectedFloatValue = 35.4F;
double expectedDoubleValue = 1.23456789;
byte byteValue = 0;
short shortValue = 0;
int intValue = 0;
long longValue = 0;
float floatValue = 0;
double doubleValue = 0;
addr = debugger.lookup(loadObjectName, "testByte");
if (addr == null) {
System.err.println("Error looking up symbol \"testByte\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
byteValue = addr.getJByteAt(0);
if (byteValue != expectedByteValue) {
System.err.println("Error: unexpected byte value (got " +
byteValue + ", expected " + expectedByteValue + ")");
System.exit(1);
}
addr = debugger.lookup(loadObjectName, "testShort");
if (addr == null) {
System.err.println("Error looking up symbol \"testShort\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
shortValue = addr.getJShortAt(0);
if (shortValue != expectedShortValue) {
System.err.println("Error: unexpected short value (got " +
shortValue + ", expected " + expectedShortValue + ")");
System.exit(1);
}
addr = debugger.lookup(loadObjectName, "testInt");
if (addr == null) {
System.err.println("Error looking up symbol \"testInt\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
intValue = addr.getJIntAt(0);
if (intValue != expectedIntValue) {
System.err.println("Error: unexpected int value (got " +
intValue + ", expected " + expectedIntValue + ")");
System.exit(1);
}
addr = debugger.lookup(loadObjectName, "testLong");
if (addr == null) {
System.err.println("Error looking up symbol \"testLong\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
longValue = addr.getJLongAt(0);
if (longValue != expectedLongValue) {
System.err.println("Error: unexpected long value (got " +
longValue + ", expected " + expectedLongValue + ")");
System.exit(1);
}
addr = debugger.lookup(loadObjectName, "testFloat");
if (addr == null) {
System.err.println("Error looking up symbol \"testFloat\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
floatValue = addr.getJFloatAt(0);
if (floatValue != expectedFloatValue) {
System.err.println("Error: unexpected float value (got " +
floatValue + ", expected " + expectedFloatValue + ")");
System.exit(1);
}
addr = debugger.lookup(loadObjectName, "testDouble");
if (addr == null) {
System.err.println("Error looking up symbol \"testDouble\" in context \"" +
loadObjectName + "\"");
System.exit(1);
}
doubleValue = addr.getJDoubleAt(0);
if (doubleValue != expectedDoubleValue) {
System.err.println("Error: unexpected double value (got " +
doubleValue + ", expected " + expectedDoubleValue + ")");
System.exit(1);
}
System.err.println("All tests passed successfully.");
debugger.detach();
}
catch (AddressException e) {
System.err.println("Error occurred during test:");
e.printStackTrace();
System.exit(1);
}
}
}

View File

@@ -1,97 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public abstract class AbstractInstruction implements Instruction {
protected final String name;
public AbstractInstruction(String name) {
this.name = name;
}
public String getName() {
return name;
}
// some type testers
public boolean isIllegal() {
return false;
}
public boolean isArithmetic() {
return false;
}
public boolean isLogical() {
return false;
}
public boolean isShift() {
return false;
}
public boolean isMove() {
return false;
}
public boolean isBranch() {
return false;
}
public boolean isCall() {
return false;
}
public boolean isReturn() {
return false;
}
public boolean isLoad() {
return false;
}
public boolean isStore() {
return false;
}
public boolean isFloat() {
return false;
}
public boolean isTrap() {
return false;
}
public boolean isNoop() {
return false;
}
// convert the instruction as String given currentPc
// and SymbolFinder
public String asString(long currentPc, SymbolFinder symFinder) {
return name;
}
}

View File

@@ -1,31 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface ArithmeticInstruction extends Instruction, RTLOperations {
public Operand[] getArithmeticSources();
public Operand getArithmeticDestination();
public int getOperation(); // one of RTLOperations
}

View File

@@ -1,88 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
// address is calculated as (base + (index * scale) + displacement)
// optionally index is auto incremented or decremented
public abstract class BaseIndexScaleDispAddress extends IndirectAddress {
private final Register base, index;
private final int scale;
private final long disp;
private boolean isAutoIncr;
private boolean isAutoDecr;
public BaseIndexScaleDispAddress(Register base, Register index, long disp, int scale) {
this.base = base;
this.index = index;
this.disp = disp;
this.scale = scale;
}
public BaseIndexScaleDispAddress(Register base, Register index, long disp) {
this(base, index, disp, 1);
}
public BaseIndexScaleDispAddress(Register base, Register index) {
this(base, index, 0L, 1);
}
public BaseIndexScaleDispAddress(Register base, long disp) {
this(base, null, disp, 1);
}
public Register getBase() {
return base;
}
public Register getIndex() {
return index;
}
public int getScale() {
return scale;
}
public long getDisplacement() {
return disp;
}
// is the index auto decremented or incremented?
public boolean isAutoIncrement() {
return isAutoIncr;
}
public void setAutoIncrement(boolean value) {
isAutoIncr = value;
}
public boolean isAutoDecrement() {
return isAutoDecr;
}
public void setAutoDecrement(boolean value) {
isAutoDecr = value;
}
}

View File

@@ -1,33 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface CPUHelper {
public Disassembler createDisassembler(long startPc, byte[] code);
public Register getIntegerRegister(int num);
public Register getFloatRegister(int num);
public Register getStackPointer();
public Register getFramePointer();
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2012, 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
@@ -24,22 +24,134 @@
package sun.jvm.hotspot.asm;
public abstract class Disassembler {
protected long startPc;
protected byte[] code;
import java.io.PrintStream;
import java.util.Observer;
import java.util.Observable;
import sun.jvm.hotspot.code.CodeBlob;
import sun.jvm.hotspot.code.NMethod;
import sun.jvm.hotspot.debugger.Address;
import sun.jvm.hotspot.runtime.VM;
public Disassembler(long startPc, byte[] code) {
public class Disassembler {
private static String options = "";
private static long decode_function;
protected long startPc;
protected byte[] code;
private CodeBlob blob;
private NMethod nmethod;
public static void decode(InstructionVisitor visitor, CodeBlob blob) {
decode(visitor, blob, blob.codeBegin(), blob.codeEnd());
}
public static void decode(InstructionVisitor visitor, CodeBlob blob, Address begin, Address end) {
int codeSize = (int)end.minus(begin);
long startPc = VM.getAddressValue(begin);
byte[] code = new byte[codeSize];
for (int i = 0; i < code.length; i++)
code[i] = begin.getJByteAt(i);
Disassembler dis = new Disassembler(startPc, code);
dis.decode(visitor);
}
private Disassembler(long startPc, byte[] code) {
this.startPc = startPc;
this.code = code;
// Lazily load hsdis
if (decode_function == 0) {
StringBuilder path = new StringBuilder(System.getProperty("java.home"));
String sep = System.getProperty("file.separator");
String os = System.getProperty("os.name");
String libname = "hsdis";
String arch = System.getProperty("os.arch");
if (os.lastIndexOf("Windows", 0) != -1) {
path.append(sep + "bin" + sep);
libname += ".dll";
} else if (os.lastIndexOf("SunOS", 0) != -1) {
if (arch.equals("x86") || arch.equals("i386")) {
path.append(sep + "lib" + sep + "i386" + sep);
libname += "-i386" + ".so";
} else if (arch.equals("amd64")) {
path.append(sep + "lib" + sep + "amd64" + sep);
libname += "-amd64" + ".so";
} else {
path.append(sep + "lib" + sep + arch + sep);
libname += "-" + arch + ".so";
}
} else if (os.lastIndexOf("Linux", 0) != -1) {
if (arch.equals("x86") || arch.equals("i386")) {
path.append(sep + "lib" + sep + "i386" + sep);
libname += "-i386.so";
} else if (arch.equals("amd64") || arch.equals("x86_64")) {
path.append(sep + "lib" + sep + "amd64" + sep);
libname += "-amd64.so";
} else {
path.append(sep + "lib" + sep + arch + sep);
libname += "-" + arch + ".so";
}
} else if (os.lastIndexOf("Mac OS X", 0) != -1) {
path.append(sep + "lib" + sep);
libname += "-amd64" + ".dylib"; // x86_64 => amd64
} else {
path.append(sep + "lib" + sep + "arch" + sep);
libname += "-" + arch + ".so";
}
decode_function = load_library(path.toString(), libname);
}
}
public long getStartPC() {
return startPc;
private static native long load_library(String installed_jrepath, String hsdis_library_name);
private native void decode(InstructionVisitor visitor, long pc, byte[] code,
String options, long decode_function);
private void decode(InstructionVisitor visitor) {
visitor.prologue();
decode(visitor, startPc, code, options, decode_function);
visitor.epilogue();
}
public byte[] getCode() {
return code;
private boolean match(String event, String tag) {
if (!event.startsWith(tag))
return false;
int taglen = tag.length();
if (taglen == event.length()) return true;
char delim = event.charAt(taglen);
return delim == ' ' || delim == '/' || delim == '=';
}
public abstract void decode(InstructionVisitor visitor);
// This is called from the native code to process various markers
// in the dissassembly.
private long handleEvent(InstructionVisitor visitor, String event, long arg) {
if (match(event, "insn")) {
try {
visitor.beginInstruction(arg);
} catch (Throwable e) {
e.printStackTrace();
}
} else if (match(event, "/insn")) {
try {
visitor.endInstruction(arg);
} catch (Throwable e) {
e.printStackTrace();
}
} else if (match(event, "addr")) {
if (arg != 0) {
visitor.printAddress(arg);
}
return arg;
} else if (match(event, "mach")) {
// output().printf("[Disassembling for mach='%s']\n", arg);
} else {
// ignore unrecognized markup
}
return 0;
}
// This called from the native code to perform printing
private void rawPrint(InstructionVisitor visitor, String s) {
visitor.print(s);
}
}

View File

@@ -1,53 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface Instruction {
public String getName();
// total size in bytes (operands + opcode).
// for eg. in sparc it is always 4 (= 32bits)
public int getSize();
// some type testers
public boolean isIllegal();
public boolean isArithmetic();
public boolean isLogical();
public boolean isShift();
public boolean isMove();
public boolean isBranch();
public boolean isCall();
public boolean isReturn();
public boolean isLoad();
public boolean isStore();
public boolean isFloat();
public boolean isTrap();
public boolean isNoop();
// convert the instruction as String given currentPc
// and SymbolFinder
public String asString(long currentPc, SymbolFinder symFinder);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2012, 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
@@ -26,6 +26,9 @@ package sun.jvm.hotspot.asm;
public interface InstructionVisitor {
public void prologue();
public void visit(long currentPc, Instruction instr);
public void beginInstruction(long currentPc);
public void printAddress(long address);
public void print(String format);
public void endInstruction(long endPc);
public void epilogue();
}

View File

@@ -1,30 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface LoadInstruction extends MemoryInstruction {
public Address getLoadSource();
public Register[] getLoadDestinations();
}

View File

@@ -1,31 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface LogicInstruction extends Instruction, RTLOperations {
public Operand[] getLogicSources();
public Operand getLogicDestination();
public int getOperation(); // one of RTLOperations
}

View File

@@ -1,30 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface MemoryInstruction extends RTLDataTypes {
public int getDataType(); // one of the RTLDataTypes.
public boolean isConditional(); // conditional store like swap or v9 like non-faulting loads
}

View File

@@ -1,32 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface MoveInstruction extends Instruction {
public ImmediateOrRegister getMoveSource();
public Register getMoveDestination();
// for condition moves
public boolean isConditional();
}

View File

@@ -1,53 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface RTLDataTypes {
// HALF = 16 bits, WORD = 32 bits, DWORD = 64 bits and QWORD = 128 bits.
public static final int RTLDT_SIGNED_BYTE = 0;
public static final int RTLDT_UNSIGNED_BYTE = 1;
public static final int RTLDT_SIGNED_HALF = 2;
public static final int RTLDT_UNSIGNED_HALF = 3;
public static final int RTLDT_SIGNED_WORD = 4;
public static final int RTLDT_UNSIGNED_WORD = 5;
public static final int RTLDT_SIGNED_DWORD = 6;
public static final int RTLDT_UNSIGNED_DWORD = 7;
public static final int RTLDT_SIGNED_QWORD = 8;
public static final int RTLDT_UNSIGNED_QWORD = 9;
// float is 4 bytes, double is 8 bytes, extended double is 10 bytes
// and quad is 16 bytes.
public static final int RTLDT_FL_SINGLE = 10;
public static final int RTLDT_FL_DOUBLE = 11;
public static final int RTLDT_FL_EXT_DOUBLE = 12;
public static final int RTLDT_FL_QUAD = 13;
public static final int RTLDT_STRING = 14;
public static final int RTLDT_UNKNOWN = Integer.MAX_VALUE;
}

View File

@@ -1,62 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface RTLOperations {
// arithmetic operations
public static final int RTLOP_ADD = 0;
// with carry
public static final int RTLOP_ADDC = 1;
public static final int RTLOP_SUB = 2;
// with carry
public static final int RTLOP_SUBC = 3;
public static final int RTLOP_SMUL = 4;
public static final int RTLOP_UMUL = 5;
public static final int RTLOP_SDIV = 6;
public static final int RTLOP_UDIV = 7;
public static final int RTLOP_MAX_ARITHMETIC = RTLOP_UDIV;
// logical operations
public static final int RTLOP_AND = 8;
public static final int RTLOP_OR = 9;
public static final int RTLOP_NOT = 10;
public static final int RTLOP_NAND = 11;
public static final int RTLOP_NOR = 12;
public static final int RTLOP_XOR = 13;
public static final int RTLOP_XNOR = 14;
public static final int RTLOP_MAX_LOGICAL = RTLOP_XNOR;
// shift operations
public static final int RTLOP_SRL = 15;
public static final int RTLOP_SRA = 16;
public static final int RTLOP_SLL = 17;
public static final int RTLOP_MAX_SHIFT = RTLOP_SLL;
public static final int RTLOP_UNKNOWN = Integer.MAX_VALUE;
}

View File

@@ -1,28 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface ReturnInstruction extends BranchInstruction {
}

View File

@@ -1,31 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface ShiftInstruction extends Instruction, RTLOperations {
public Operand getShiftSource();
public Operand getShiftLength(); // number of bits to shift
public Operand getShiftDestination();
}

View File

@@ -1,30 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm;
public interface StoreInstruction extends MemoryInstruction {
public Register[] getStoreSources();
public Address getStoreDestination();
}

View File

@@ -1,90 +0,0 @@
/*
* Copyright (c) 2003, 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.
*
* 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 sun.jvm.hotspot.asm.amd64;
import sun.jvm.hotspot.utilities.Assert;
public class AMD64FloatRegisters {
public static int getNumRegisters() {
return NUM_REGIXMMERS;
}
public static AMD64FloatRegister getRegister(int regNum) {
if (Assert.ASSERTS_ENABLED) {
Assert.that(regNum > -1 && regNum < NUM_REGIXMMERS, "invalid float register number!");
}
return registers[regNum];
}
public static String getRegisterName(int i) {
return "XMM(" + i + ")";
}
public static final AMD64FloatRegister XMM0;
public static final AMD64FloatRegister XMM1;
public static final AMD64FloatRegister XMM2;
public static final AMD64FloatRegister XMM3;
public static final AMD64FloatRegister XMM4;
public static final AMD64FloatRegister XMM5;
public static final AMD64FloatRegister XMM6;
public static final AMD64FloatRegister XMM7;
public static final AMD64FloatRegister XMM8;
public static final AMD64FloatRegister XMM9;
public static final AMD64FloatRegister XMM10;
public static final AMD64FloatRegister XMM11;
public static final AMD64FloatRegister XMM12;
public static final AMD64FloatRegister XMM13;
public static final AMD64FloatRegister XMM14;
public static final AMD64FloatRegister XMM15;
public static final int NUM_REGIXMMERS = 16;
private static final AMD64FloatRegister[] registers;
static {
XMM0 = new AMD64FloatRegister(0);
XMM1 = new AMD64FloatRegister(1);
XMM2 = new AMD64FloatRegister(2);
XMM3 = new AMD64FloatRegister(3);
XMM4 = new AMD64FloatRegister(4);
XMM5 = new AMD64FloatRegister(5);
XMM6 = new AMD64FloatRegister(6);
XMM7 = new AMD64FloatRegister(7);
XMM8 = new AMD64FloatRegister(8);
XMM9 = new AMD64FloatRegister(9);
XMM10 = new AMD64FloatRegister(10);
XMM11 = new AMD64FloatRegister(11);
XMM12 = new AMD64FloatRegister(12);
XMM13 = new AMD64FloatRegister(13);
XMM14 = new AMD64FloatRegister(14);
XMM15 = new AMD64FloatRegister(15);
registers = new AMD64FloatRegister[] {
XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7,
XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15
};
}
}

View File

@@ -1,92 +0,0 @@
/*
* Copyright (c) 2003, 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.
*
* 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 sun.jvm.hotspot.asm.amd64;
import sun.jvm.hotspot.utilities.*;
public class AMD64Registers {
public static final int NUM_REGISTERS = 16;
public static final AMD64Register RAX;
public static final AMD64Register RCX;
public static final AMD64Register RDX;
public static final AMD64Register RBX;
public static final AMD64Register RSP;
public static final AMD64Register RBP;
public static final AMD64Register RSI;
public static final AMD64Register RDI;
public static final AMD64Register R8;
public static final AMD64Register R9;
public static final AMD64Register R10;
public static final AMD64Register R11;
public static final AMD64Register R12;
public static final AMD64Register R13;
public static final AMD64Register R14;
public static final AMD64Register R15;
private static final AMD64Register[] registers;
static {
RAX = new AMD64Register(0, "rax");
RCX = new AMD64Register(1, "rcx");
RDX = new AMD64Register(2, "rdx");
RBX = new AMD64Register(3, "rbx");
RSP = new AMD64Register(4, "rsp");
RBP = new AMD64Register(5, "rbp");
RSI = new AMD64Register(6, "rsi");
RDI = new AMD64Register(7, "rdi");
R8 = new AMD64Register(8, "r8" );
R9 = new AMD64Register(9, "r9" );
R10 = new AMD64Register(10,"r10");
R11 = new AMD64Register(11,"r11");
R12 = new AMD64Register(12,"r12");
R13 = new AMD64Register(13,"r13");
R14 = new AMD64Register(14,"r14");
R15 = new AMD64Register(15,"r15");
registers = new AMD64Register[] {
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI,
R8, R9, R10, R11, R12, R13, R14, R15
};
}
public static int getNumberOfRegisters() {
return NUM_REGISTERS;
}
public static AMD64Register getRegister(int regNum) {
if (Assert.ASSERTS_ENABLED) {
Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!");
}
return registers[regNum];
}
//Return the register name
public static String getRegisterName(int regNum) {
if (Assert.ASSERTS_ENABLED) {
Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!");
}
return registers[regNum].toString();
}
}

View File

@@ -1,320 +0,0 @@
/*
* Copyright (c) 2003, 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.
*
* 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 sun.jvm.hotspot.asm.ia64;
import sun.jvm.hotspot.utilities.Assert;
public class IA64FloatRegisters {
public static int getNumRegisters() {
return 128;
}
public static IA64FloatRegister getRegister(int i) {
Assert.that(i >= 0 && i < 128, "float register number is invalid");
return registers[i];
}
public static String getRegisterName(int i) {
return "%f" + i;
}
public static final IA64FloatRegister F0;
public static final IA64FloatRegister F1;
public static final IA64FloatRegister F2;
public static final IA64FloatRegister F3;
public static final IA64FloatRegister F4;
public static final IA64FloatRegister F5;
public static final IA64FloatRegister F6;
public static final IA64FloatRegister F7;
public static final IA64FloatRegister F8;
public static final IA64FloatRegister F9;
public static final IA64FloatRegister F10;
public static final IA64FloatRegister F11;
public static final IA64FloatRegister F12;
public static final IA64FloatRegister F13;
public static final IA64FloatRegister F14;
public static final IA64FloatRegister F15;
public static final IA64FloatRegister F16;
public static final IA64FloatRegister F17;
public static final IA64FloatRegister F18;
public static final IA64FloatRegister F19;
public static final IA64FloatRegister F20;
public static final IA64FloatRegister F21;
public static final IA64FloatRegister F22;
public static final IA64FloatRegister F23;
public static final IA64FloatRegister F24;
public static final IA64FloatRegister F25;
public static final IA64FloatRegister F26;
public static final IA64FloatRegister F27;
public static final IA64FloatRegister F28;
public static final IA64FloatRegister F29;
public static final IA64FloatRegister F30;
public static final IA64FloatRegister F31;
public static final IA64FloatRegister F32;
public static final IA64FloatRegister F33;
public static final IA64FloatRegister F34;
public static final IA64FloatRegister F35;
public static final IA64FloatRegister F36;
public static final IA64FloatRegister F37;
public static final IA64FloatRegister F38;
public static final IA64FloatRegister F39;
public static final IA64FloatRegister F40;
public static final IA64FloatRegister F41;
public static final IA64FloatRegister F42;
public static final IA64FloatRegister F43;
public static final IA64FloatRegister F44;
public static final IA64FloatRegister F45;
public static final IA64FloatRegister F46;
public static final IA64FloatRegister F47;
public static final IA64FloatRegister F48;
public static final IA64FloatRegister F49;
public static final IA64FloatRegister F50;
public static final IA64FloatRegister F51;
public static final IA64FloatRegister F52;
public static final IA64FloatRegister F53;
public static final IA64FloatRegister F54;
public static final IA64FloatRegister F55;
public static final IA64FloatRegister F56;
public static final IA64FloatRegister F57;
public static final IA64FloatRegister F58;
public static final IA64FloatRegister F59;
public static final IA64FloatRegister F60;
public static final IA64FloatRegister F61;
public static final IA64FloatRegister F62;
public static final IA64FloatRegister F63;
public static final IA64FloatRegister F64;
public static final IA64FloatRegister F65;
public static final IA64FloatRegister F66;
public static final IA64FloatRegister F67;
public static final IA64FloatRegister F68;
public static final IA64FloatRegister F69;
public static final IA64FloatRegister F70;
public static final IA64FloatRegister F71;
public static final IA64FloatRegister F72;
public static final IA64FloatRegister F73;
public static final IA64FloatRegister F74;
public static final IA64FloatRegister F75;
public static final IA64FloatRegister F76;
public static final IA64FloatRegister F77;
public static final IA64FloatRegister F78;
public static final IA64FloatRegister F79;
public static final IA64FloatRegister F80;
public static final IA64FloatRegister F81;
public static final IA64FloatRegister F82;
public static final IA64FloatRegister F83;
public static final IA64FloatRegister F84;
public static final IA64FloatRegister F85;
public static final IA64FloatRegister F86;
public static final IA64FloatRegister F87;
public static final IA64FloatRegister F88;
public static final IA64FloatRegister F89;
public static final IA64FloatRegister F90;
public static final IA64FloatRegister F91;
public static final IA64FloatRegister F92;
public static final IA64FloatRegister F93;
public static final IA64FloatRegister F94;
public static final IA64FloatRegister F95;
public static final IA64FloatRegister F96;
public static final IA64FloatRegister F97;
public static final IA64FloatRegister F98;
public static final IA64FloatRegister F99;
public static final IA64FloatRegister F100;
public static final IA64FloatRegister F101;
public static final IA64FloatRegister F102;
public static final IA64FloatRegister F103;
public static final IA64FloatRegister F104;
public static final IA64FloatRegister F105;
public static final IA64FloatRegister F106;
public static final IA64FloatRegister F107;
public static final IA64FloatRegister F108;
public static final IA64FloatRegister F109;
public static final IA64FloatRegister F110;
public static final IA64FloatRegister F111;
public static final IA64FloatRegister F112;
public static final IA64FloatRegister F113;
public static final IA64FloatRegister F114;
public static final IA64FloatRegister F115;
public static final IA64FloatRegister F116;
public static final IA64FloatRegister F117;
public static final IA64FloatRegister F118;
public static final IA64FloatRegister F119;
public static final IA64FloatRegister F120;
public static final IA64FloatRegister F121;
public static final IA64FloatRegister F122;
public static final IA64FloatRegister F123;
public static final IA64FloatRegister F124;
public static final IA64FloatRegister F125;
public static final IA64FloatRegister F126;
public static final IA64FloatRegister F127;
public static final int NUM_REGISTERS = 128;
private static final IA64FloatRegister registers[];
static {
F0 = new IA64FloatRegister(0);
F1 = new IA64FloatRegister(1);
F2 = new IA64FloatRegister(2);
F3 = new IA64FloatRegister(3);
F4 = new IA64FloatRegister(4);
F5 = new IA64FloatRegister(5);
F6 = new IA64FloatRegister(6);
F7 = new IA64FloatRegister(7);
F8 = new IA64FloatRegister(8);
F9 = new IA64FloatRegister(9);
F10 = new IA64FloatRegister(10);
F11 = new IA64FloatRegister(11);
F12 = new IA64FloatRegister(12);
F13 = new IA64FloatRegister(13);
F14 = new IA64FloatRegister(14);
F15 = new IA64FloatRegister(15);
F16 = new IA64FloatRegister(16);
F17 = new IA64FloatRegister(17);
F18 = new IA64FloatRegister(18);
F19 = new IA64FloatRegister(19);
F20 = new IA64FloatRegister(20);
F21 = new IA64FloatRegister(21);
F22 = new IA64FloatRegister(22);
F23 = new IA64FloatRegister(23);
F24 = new IA64FloatRegister(24);
F25 = new IA64FloatRegister(25);
F26 = new IA64FloatRegister(26);
F27 = new IA64FloatRegister(27);
F28 = new IA64FloatRegister(28);
F29 = new IA64FloatRegister(29);
F30 = new IA64FloatRegister(30);
F31 = new IA64FloatRegister(31);
F32 = new IA64FloatRegister(32);
F33 = new IA64FloatRegister(33);
F34 = new IA64FloatRegister(34);
F35 = new IA64FloatRegister(35);
F36 = new IA64FloatRegister(36);
F37 = new IA64FloatRegister(37);
F38 = new IA64FloatRegister(38);
F39 = new IA64FloatRegister(39);
F40 = new IA64FloatRegister(40);
F41 = new IA64FloatRegister(41);
F42 = new IA64FloatRegister(42);
F43 = new IA64FloatRegister(43);
F44 = new IA64FloatRegister(44);
F45 = new IA64FloatRegister(45);
F46 = new IA64FloatRegister(46);
F47 = new IA64FloatRegister(47);
F48 = new IA64FloatRegister(48);
F49 = new IA64FloatRegister(49);
F50 = new IA64FloatRegister(50);
F51 = new IA64FloatRegister(51);
F52 = new IA64FloatRegister(52);
F53 = new IA64FloatRegister(53);
F54 = new IA64FloatRegister(54);
F55 = new IA64FloatRegister(55);
F56 = new IA64FloatRegister(56);
F57 = new IA64FloatRegister(57);
F58 = new IA64FloatRegister(58);
F59 = new IA64FloatRegister(59);
F60 = new IA64FloatRegister(60);
F61 = new IA64FloatRegister(61);
F62 = new IA64FloatRegister(62);
F63 = new IA64FloatRegister(63);
F64 = new IA64FloatRegister(64);
F65 = new IA64FloatRegister(65);
F66 = new IA64FloatRegister(66);
F67 = new IA64FloatRegister(67);
F68 = new IA64FloatRegister(68);
F69 = new IA64FloatRegister(69);
F70 = new IA64FloatRegister(70);
F71 = new IA64FloatRegister(71);
F72 = new IA64FloatRegister(72);
F73 = new IA64FloatRegister(73);
F74 = new IA64FloatRegister(74);
F75 = new IA64FloatRegister(75);
F76 = new IA64FloatRegister(76);
F77 = new IA64FloatRegister(77);
F78 = new IA64FloatRegister(78);
F79 = new IA64FloatRegister(79);
F80 = new IA64FloatRegister(80);
F81 = new IA64FloatRegister(81);
F82 = new IA64FloatRegister(82);
F83 = new IA64FloatRegister(83);
F84 = new IA64FloatRegister(84);
F85 = new IA64FloatRegister(85);
F86 = new IA64FloatRegister(86);
F87 = new IA64FloatRegister(87);
F88 = new IA64FloatRegister(88);
F89 = new IA64FloatRegister(89);
F90 = new IA64FloatRegister(90);
F91 = new IA64FloatRegister(91);
F92 = new IA64FloatRegister(92);
F93 = new IA64FloatRegister(93);
F94 = new IA64FloatRegister(94);
F95 = new IA64FloatRegister(95);
F96 = new IA64FloatRegister(96);
F97 = new IA64FloatRegister(97);
F98 = new IA64FloatRegister(98);
F99 = new IA64FloatRegister(99);
F100 = new IA64FloatRegister(100);
F101 = new IA64FloatRegister(101);
F102 = new IA64FloatRegister(102);
F103 = new IA64FloatRegister(103);
F104 = new IA64FloatRegister(104);
F105 = new IA64FloatRegister(105);
F106 = new IA64FloatRegister(106);
F107 = new IA64FloatRegister(107);
F108 = new IA64FloatRegister(108);
F109 = new IA64FloatRegister(109);
F110 = new IA64FloatRegister(110);
F111 = new IA64FloatRegister(111);
F112 = new IA64FloatRegister(112);
F113 = new IA64FloatRegister(113);
F114 = new IA64FloatRegister(114);
F115 = new IA64FloatRegister(115);
F116 = new IA64FloatRegister(116);
F117 = new IA64FloatRegister(117);
F118 = new IA64FloatRegister(118);
F119 = new IA64FloatRegister(119);
F120 = new IA64FloatRegister(120);
F121 = new IA64FloatRegister(121);
F122 = new IA64FloatRegister(122);
F123 = new IA64FloatRegister(123);
F124 = new IA64FloatRegister(124);
F125 = new IA64FloatRegister(125);
F126 = new IA64FloatRegister(126);
F127 = new IA64FloatRegister(127);
registers = (new IA64FloatRegister[] {
F0, F1, F2, F3, F4, F5, F6, F7, F8, F9,
F10, F11, F12, F13, F14, F15, F16, F17, F18, F19,
F20, F21, F22, F23, F24, F25, F26, F27, F28, F29,
F30, F31, F32, F33, F34, F35, F36, F37, F38, F39,
F40, F41, F42, F43, F44, F45, F46, F47, F48, F49,
F50, F51, F52, F53, F54, F55, F56, F57, F58, F59,
F60, F61, F62, F63, F64, F65, F66, F67, F68, F69,
F70, F71, F72, F73, F74, F75, F76, F77, F78, F79,
F80, F81, F82, F83, F84, F85, F86, F87, F88, F89,
F90, F91, F92, F93, F94, F95, F96, F97, F98, F99,
F100, F101, F102, F103, F104, F105, F106, F107, F108, F109,
F110, F111, F112, F113, F114, F115, F116, F117, F118, F119,
F120, F121, F122, F123, F124, F125, F126, F127
});
}
}

View File

@@ -1,54 +0,0 @@
/*
* Copyright (c) 2003, 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.
*
* 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 sun.jvm.hotspot.asm.ia64;
import sun.jvm.hotspot.asm.*;
public class IA64Helper implements CPUHelper {
public Disassembler createDisassembler(long startPc, byte[] code) {
// FIXME: IA64 disassembler not implemented
return null;
}
public Register getIntegerRegister(int num) {
// FIXME: IA64 disassembler not implemented
return null;
}
public Register getFloatRegister(int num) {
// FIXME: IA64 disassembler not implemented
return null;
}
public Register getStackPointer() {
// FIXME: IA64 disassembler not implemented
return null;
}
public Register getFramePointer() {
// FIXME: IA64 disassembler not implemented
return null;
}
}

View File

@@ -1,76 +0,0 @@
/*
* Copyright (c) 2003, 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.
*
* 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 sun.jvm.hotspot.asm.ia64;
import sun.jvm.hotspot.asm.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.utilities.*;
public class IA64Register extends Register {
//
private static final int STACKED_BASE = 32;
private static final int STACKED_END = 127;
// We put application registers here too rather than separate types
private static final int APPL_BASE = 128;
private static final int nofRegisters = 129; // total number of registers
/** Constructor for an explicitly numbered register */
public IA64Register(int number) {
super(number);
}
public int getNumberOfRegisters() {
return nofRegisters;
}
public boolean isStacked() {
return (32 <= getNumber());
}
/** NOTE: this returns an offset in BYTES in this system! */
public long spOffsetInSavedWindow() {
return 0;
}
public String toString() {
return IA64Registers.getRegisterName(number);
}
public boolean isFramePointer() {
return number == APPL_BASE;
}
public boolean isStackPointer() {
return number == 12;
}
public boolean isFloat() {
return false;
}
}

View File

@@ -1,353 +0,0 @@
/*
* Copyright (c) 2003, 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.
*
* 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 sun.jvm.hotspot.asm.ia64;
import sun.jvm.hotspot.utilities.*;
public class IA64Registers {
public static final IA64Register GR0;
public static final IA64Register GR1;
public static final IA64Register GR2;
public static final IA64Register GR3;
public static final IA64Register GR4;
public static final IA64Register GR5;
public static final IA64Register GR6;
public static final IA64Register GR7;
public static final IA64Register GR8;
public static final IA64Register GR9;
public static final IA64Register GR10;
public static final IA64Register GR11;
public static final IA64Register GR12;
public static final IA64Register GR13;
public static final IA64Register GR14;
public static final IA64Register GR15;
public static final IA64Register GR16;
public static final IA64Register GR17;
public static final IA64Register GR18;
public static final IA64Register GR19;
public static final IA64Register GR20;
public static final IA64Register GR21;
public static final IA64Register GR22;
public static final IA64Register GR23;
public static final IA64Register GR24;
public static final IA64Register GR25;
public static final IA64Register GR26;
public static final IA64Register GR27;
public static final IA64Register GR28;
public static final IA64Register GR29;
public static final IA64Register GR30;
public static final IA64Register GR31;
public static final IA64Register GR32;
public static final IA64Register GR33;
public static final IA64Register GR34;
public static final IA64Register GR35;
public static final IA64Register GR36;
public static final IA64Register GR37;
public static final IA64Register GR38;
public static final IA64Register GR39;
public static final IA64Register GR40;
public static final IA64Register GR41;
public static final IA64Register GR42;
public static final IA64Register GR43;
public static final IA64Register GR44;
public static final IA64Register GR45;
public static final IA64Register GR46;
public static final IA64Register GR47;
public static final IA64Register GR48;
public static final IA64Register GR49;
public static final IA64Register GR50;
public static final IA64Register GR51;
public static final IA64Register GR52;
public static final IA64Register GR53;
public static final IA64Register GR54;
public static final IA64Register GR55;
public static final IA64Register GR56;
public static final IA64Register GR57;
public static final IA64Register GR58;
public static final IA64Register GR59;
public static final IA64Register GR60;
public static final IA64Register GR61;
public static final IA64Register GR62;
public static final IA64Register GR63;
public static final IA64Register GR64;
public static final IA64Register GR65;
public static final IA64Register GR66;
public static final IA64Register GR67;
public static final IA64Register GR68;
public static final IA64Register GR69;
public static final IA64Register GR70;
public static final IA64Register GR71;
public static final IA64Register GR72;
public static final IA64Register GR73;
public static final IA64Register GR74;
public static final IA64Register GR75;
public static final IA64Register GR76;
public static final IA64Register GR77;
public static final IA64Register GR78;
public static final IA64Register GR79;
public static final IA64Register GR80;
public static final IA64Register GR81;
public static final IA64Register GR82;
public static final IA64Register GR83;
public static final IA64Register GR84;
public static final IA64Register GR85;
public static final IA64Register GR86;
public static final IA64Register GR87;
public static final IA64Register GR88;
public static final IA64Register GR89;
public static final IA64Register GR90;
public static final IA64Register GR91;
public static final IA64Register GR92;
public static final IA64Register GR93;
public static final IA64Register GR94;
public static final IA64Register GR95;
public static final IA64Register GR96;
public static final IA64Register GR97;
public static final IA64Register GR98;
public static final IA64Register GR99;
public static final IA64Register GR100;
public static final IA64Register GR101;
public static final IA64Register GR102;
public static final IA64Register GR103;
public static final IA64Register GR104;
public static final IA64Register GR105;
public static final IA64Register GR106;
public static final IA64Register GR107;
public static final IA64Register GR108;
public static final IA64Register GR109;
public static final IA64Register GR110;
public static final IA64Register GR111;
public static final IA64Register GR112;
public static final IA64Register GR113;
public static final IA64Register GR114;
public static final IA64Register GR115;
public static final IA64Register GR116;
public static final IA64Register GR117;
public static final IA64Register GR118;
public static final IA64Register GR119;
public static final IA64Register GR120;
public static final IA64Register GR121;
public static final IA64Register GR122;
public static final IA64Register GR123;
public static final IA64Register GR124;
public static final IA64Register GR125;
public static final IA64Register GR126;
public static final IA64Register GR127;
public static final IA64Register AR_BSP;
public static final int NUM_REGISTERS = 129;
private static final IA64Register registers[];
static {
GR0 = new IA64Register(0);
GR1 = new IA64Register(1);
GR2 = new IA64Register(2);
GR3 = new IA64Register(3);
GR4 = new IA64Register(4);
GR5 = new IA64Register(5);
GR6 = new IA64Register(6);
GR7 = new IA64Register(7);
GR8 = new IA64Register(8);
GR9 = new IA64Register(9);
GR10 = new IA64Register(10);
GR11 = new IA64Register(11);
GR12 = new IA64Register(12);
GR13 = new IA64Register(13);
GR14 = new IA64Register(14);
GR15 = new IA64Register(15);
GR16 = new IA64Register(16);
GR17 = new IA64Register(17);
GR18 = new IA64Register(18);
GR19 = new IA64Register(19);
GR20 = new IA64Register(20);
GR21 = new IA64Register(21);
GR22 = new IA64Register(22);
GR23 = new IA64Register(23);
GR24 = new IA64Register(24);
GR25 = new IA64Register(25);
GR26 = new IA64Register(26);
GR27 = new IA64Register(27);
GR28 = new IA64Register(28);
GR29 = new IA64Register(29);
GR30 = new IA64Register(30);
GR31 = new IA64Register(31);
GR32 = new IA64Register(32);
GR33 = new IA64Register(33);
GR34 = new IA64Register(34);
GR35 = new IA64Register(35);
GR36 = new IA64Register(36);
GR37 = new IA64Register(37);
GR38 = new IA64Register(38);
GR39 = new IA64Register(39);
GR40 = new IA64Register(40);
GR41 = new IA64Register(41);
GR42 = new IA64Register(42);
GR43 = new IA64Register(43);
GR44 = new IA64Register(44);
GR45 = new IA64Register(45);
GR46 = new IA64Register(46);
GR47 = new IA64Register(47);
GR48 = new IA64Register(48);
GR49 = new IA64Register(49);
GR50 = new IA64Register(50);
GR51 = new IA64Register(51);
GR52 = new IA64Register(52);
GR53 = new IA64Register(53);
GR54 = new IA64Register(54);
GR55 = new IA64Register(55);
GR56 = new IA64Register(56);
GR57 = new IA64Register(57);
GR58 = new IA64Register(58);
GR59 = new IA64Register(59);
GR60 = new IA64Register(60);
GR61 = new IA64Register(61);
GR62 = new IA64Register(62);
GR63 = new IA64Register(63);
GR64 = new IA64Register(64);
GR65 = new IA64Register(65);
GR66 = new IA64Register(66);
GR67 = new IA64Register(67);
GR68 = new IA64Register(68);
GR69 = new IA64Register(69);
GR70 = new IA64Register(70);
GR71 = new IA64Register(71);
GR72 = new IA64Register(72);
GR73 = new IA64Register(73);
GR74 = new IA64Register(74);
GR75 = new IA64Register(75);
GR76 = new IA64Register(76);
GR77 = new IA64Register(77);
GR78 = new IA64Register(78);
GR79 = new IA64Register(79);
GR80 = new IA64Register(80);
GR81 = new IA64Register(81);
GR82 = new IA64Register(82);
GR83 = new IA64Register(83);
GR84 = new IA64Register(84);
GR85 = new IA64Register(85);
GR86 = new IA64Register(86);
GR87 = new IA64Register(87);
GR88 = new IA64Register(88);
GR89 = new IA64Register(89);
GR90 = new IA64Register(90);
GR91 = new IA64Register(91);
GR92 = new IA64Register(92);
GR93 = new IA64Register(93);
GR94 = new IA64Register(94);
GR95 = new IA64Register(95);
GR96 = new IA64Register(96);
GR97 = new IA64Register(97);
GR98 = new IA64Register(98);
GR99 = new IA64Register(99);
GR100 = new IA64Register(100);
GR101 = new IA64Register(101);
GR102 = new IA64Register(102);
GR103 = new IA64Register(103);
GR104 = new IA64Register(104);
GR105 = new IA64Register(105);
GR106 = new IA64Register(106);
GR107 = new IA64Register(107);
GR108 = new IA64Register(108);
GR109 = new IA64Register(109);
GR110 = new IA64Register(110);
GR111 = new IA64Register(111);
GR112 = new IA64Register(112);
GR113 = new IA64Register(113);
GR114 = new IA64Register(114);
GR115 = new IA64Register(115);
GR116 = new IA64Register(116);
GR117 = new IA64Register(117);
GR118 = new IA64Register(118);
GR119 = new IA64Register(119);
GR120 = new IA64Register(120);
GR121 = new IA64Register(121);
GR122 = new IA64Register(122);
GR123 = new IA64Register(123);
GR124 = new IA64Register(124);
GR125 = new IA64Register(125);
GR126 = new IA64Register(126);
GR127 = new IA64Register(127);
AR_BSP = new IA64Register(128);
registers = (new IA64Register[] {
GR0, GR1, GR2, GR3, GR4, GR5, GR6, GR7, GR8, GR9,
GR10, GR11, GR12, GR13, GR14, GR15, GR16, GR17, GR18, GR19,
GR20, GR21, GR22, GR23, GR24, GR25, GR26, GR27, GR28, GR29,
GR30, GR31, GR32, GR33, GR34, GR35, GR36, GR37, GR38, GR39,
GR40, GR41, GR42, GR43, GR44, GR45, GR46, GR47, GR48, GR49,
GR50, GR51, GR52, GR53, GR54, GR55, GR56, GR57, GR58, GR59,
GR60, GR61, GR62, GR63, GR64, GR65, GR66, GR67, GR68, GR69,
GR70, GR71, GR72, GR73, GR74, GR75, GR76, GR77, GR78, GR79,
GR80, GR81, GR82, GR83, GR84, GR85, GR86, GR87, GR88, GR89,
GR90, GR91, GR92, GR93, GR94, GR95, GR96, GR97, GR98, GR99,
GR100, GR101, GR102, GR103, GR104, GR105, GR106, GR107, GR108, GR109,
GR110, GR111, GR112, GR113, GR114, GR115, GR116, GR117, GR118, GR119,
GR120, GR121, GR122, GR123, GR124, GR125, GR126, GR127, AR_BSP
});
}
public static final IA64Register FP = AR_BSP;
public static final IA64Register SP = GR12;
/** Prefer to use this instead of the constant above */
public static int getNumRegisters() {
return NUM_REGISTERS;
}
public static String getRegisterName(int regNum) {
if (regNum < 0 || regNum >= NUM_REGISTERS) {
return "[Illegal register " + regNum + "]";
}
if (Assert.ASSERTS_ENABLED) {
Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!");
}
if (regNum == 128 ) {
return "BSP";
}
if (regNum == 12) {
return "SP";
}
return "R" + regNum;
}
public static IA64Register getRegister(int regNum) {
if (Assert.ASSERTS_ENABLED) {
Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid register number!");
}
return registers[regNum];
}
}

View File

@@ -1,41 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class AlternateSpaceLdstubDecoder extends LdstubDecoder {
AlternateSpaceLdstubDecoder(int op3, String name, int dataType) {
super(op3, name, dataType);
}
Instruction decodeMemoryInstruction(int instruction,
SPARCRegisterIndirectAddress addr,
SPARCRegister rd,
SPARCInstructionFactory factory) {
setAddressSpace(instruction, addr);
return factory.newLdstubInstruction(name, addr, rd);
}
}

View File

@@ -1,41 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class AlternateSpaceLoadDecoder extends LoadDecoder {
AlternateSpaceLoadDecoder(int op3, String name, int dataType) {
super(op3, name, dataType);
}
Instruction decodeMemoryInstruction(int instruction,
SPARCRegisterIndirectAddress addr,
SPARCRegister rd,
SPARCInstructionFactory factory) {
setAddressSpace(instruction, addr);
return factory.newLoadInstruction(name, op3, addr, rd, dataType);
}
}

View File

@@ -1,41 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class AlternateSpaceStoreDecoder extends StoreDecoder {
AlternateSpaceStoreDecoder(int op3, String name, int dataType) {
super(op3, name, dataType);
}
protected Instruction decodeMemoryInstruction(int instruction,
SPARCRegisterIndirectAddress addr,
SPARCRegister rd,
SPARCInstructionFactory factory) {
setAddressSpace(instruction, addr);
return factory.newStoreInstruction(name, op3, addr, rd, dataType);
}
}

View File

@@ -1,41 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class AlternateSpaceSwapDecoder extends SwapDecoder {
AlternateSpaceSwapDecoder(int op3, String name, int dataType) {
super(op3, name, dataType);
}
Instruction decodeMemoryInstruction(int instruction,
SPARCRegisterIndirectAddress addr,
SPARCRegister rd,
SPARCInstructionFactory factory) {
setAddressSpace(instruction, addr);
return factory.newSwapInstruction(name, addr, rd);
}
}

View File

@@ -1,41 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class ArithmeticDecoder extends Format3ADecoder {
ArithmeticDecoder(int op3, String name, int rtlOperation) {
super(op3, name, rtlOperation);
}
Instruction decodeFormat3AInstruction(int instruction,
SPARCRegister rs1,
ImmediateOrRegister operand2,
SPARCRegister rd,
SPARCInstructionFactory factory) {
return factory.newArithmeticInstruction(name, op3, rtlOperation, rs1, operand2, rd);
}
}

View File

@@ -1,71 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
abstract class BranchDecoder extends InstructionDecoder {
// format 2 - condition code names.
// Appendix F - Opcodes and Condition Codes - Page 231 - Table F-7.
static final String integerConditionNames[] = {
"bn", "be", "ble", "bl", "bleu", "bcs", "bneg", "bvs",
"ba", "bne", "bg", "bge", "bgu", "bcc", "bpos", "bvc"
};
static final String integerAnnuledConditionNames[] = {
"bn,a", "be,a", "ble,a", "bl,a", "bleu,a", "bcs,a", "bneg,a", "bvs,a",
"ba,a", "bne,a", "bg,a", "bge,a", "bgu,a", "bcc,a", "bpos,a", "bvc,a"
};
// format 2 - condition code names.
// Appendix F - Opcodes and Condition Codes - Page 231 - Table F-7.
static final String floatConditionNames[] = {
"fbn", "fbne", "fblg", "fbul", "fbl", "fbug", "fbg", "fbu",
"fba", "fbe", "fbue", "fbge", "fbuge", "fble", "fbule", "fbo"
};
static final String floatAnnuledConditionNames[] = {
"fbn,a", "fbne,a", "fblg,a", "fbul,a", "fbl,a", "fbug,a", "fbg,a", "fbu,a",
"fba,a", "fbe,a", "fbue,a", "fbge,a", "fbuge,a", "fble,a", "fbule,a", "fbo,a"
};
static boolean getAnnuledBit(int instruction) {
return (instruction & ANNUL_MASK) != 0;
}
Instruction decode(int instruction, SPARCInstructionFactory factory) {
boolean isAnnuled = getAnnuledBit(instruction);
int conditionCode = getConditionCode(instruction);
String conditionName = getConditionName(conditionCode, isAnnuled);
int offset = extractSignedIntFromNBits(instruction, 22);
// word align the offset by right shifting 2 bits
offset <<= 2;
PCRelativeAddress addr = new PCRelativeAddress(offset);
return factory.newBranchInstruction(conditionName, addr, isAnnuled, conditionCode);
}
abstract String getConditionName(int conditionCode, boolean isAnnuled);
}

View File

@@ -1,35 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class CallDecoder extends InstructionDecoder {
Instruction decode(int instruction, SPARCInstructionFactory factory) {
// sign extend, word align the offset
int offset = (instruction & DISP_30_MASK) << 2;
return factory.newCallInstruction(new PCRelativeAddress(offset));
}
}

View File

@@ -1,45 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
// format 2 - condition code names.
// Appendix F - Opcodes and Condition Codes - Page 231 - Table F-7.
class CoprocessorBranchDecoder extends BranchDecoder {
private static final String coprocessorConditionNames[] = {
"cbn", "cb123", "cb12", "cb13", "cb1", "cb23", "cb2", "cb3",
"cba", "cb0", "cb03", "cb02", "cb023", "cb01", "cb013", "cb012"
};
private static final String coprocessorAnnuledConditionNames[] = {
"cbn,a", "cb123,a", "cb12,a", "cb13,a", "cb1,a", "cb23,a", "cb2,a", "cb3,a",
"cba,a", "cb0,a", "cb03,a", "cb02,a", "cb023,a", "cb01,a", "cb013,a", "cb012,a"
};
String getConditionName(int conditionCode, boolean isAnnuled) {
return isAnnuled ? coprocessorAnnuledConditionNames[conditionCode]
: coprocessorConditionNames[conditionCode];
}
}

View File

@@ -1,44 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
class CoprocessorDecoder extends InstructionDecoder {
private int op3;
CoprocessorDecoder(int op3) {
this.op3 = op3;
}
Instruction decode(int instruction, SPARCInstructionFactory factory) {
int rs1Num = getSourceRegister1(instruction);
int rs2Num = getSourceRegister2(instruction);
int rdNum = getDestinationRegister(instruction);
return factory.newCoprocessorInstruction(instruction, op3,
(instruction & OPC_MASK) >> OPF_START_BIT,
rs1Num, rs2Num, rdNum);
}
}

View File

@@ -1,45 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
import sun.jvm.hotspot.utilities.Assert;
class FP2RegisterDecoder extends FloatDecoder {
FP2RegisterDecoder(int opf, String name, int srcType, int resultType) {
super(opf, name, srcType, resultType);
}
Instruction decodeFloatInstruction(int instruction,
SPARCRegister rs1, SPARCRegister rs2,
SPARCRegister rd,
SPARCInstructionFactory factory) {
if (Assert.ASSERTS_ENABLED)
Assert.that(rs2.isFloat() && rd.isFloat(), "rs2, rd have to be float registers");
return factory.newFP2RegisterInstruction(name, opf, (SPARCFloatRegister)rs2, (SPARCFloatRegister)rd);
}
}

View File

@@ -1,50 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
import sun.jvm.hotspot.utilities.Assert;
class FPArithmeticDecoder extends FloatDecoder {
private final int rtlOperation;
FPArithmeticDecoder(int opf, String name, int rtlOperation,
int src1Type, int src2Type, int resultType) {
super(opf, name, src1Type, src2Type, resultType);
this.rtlOperation = rtlOperation;
}
Instruction decodeFloatInstruction(int instruction,
SPARCRegister rs1, SPARCRegister rs2,
SPARCRegister rd,
SPARCInstructionFactory factory) {
if (Assert.ASSERTS_ENABLED)
Assert.that(rs1.isFloat() && rs2.isFloat() && rd.isFloat(), "rs1, rs2 and rd must be floats");
return factory.newFPArithmeticInstruction(name, opf, rtlOperation,
(SPARCFloatRegister)rs1,
(SPARCFloatRegister)rs2,
(SPARCFloatRegister)rd);
}
}

View File

@@ -1,45 +0,0 @@
/*
* Copyright (c) 2002, 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.
*
* 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 sun.jvm.hotspot.asm.sparc;
import sun.jvm.hotspot.asm.*;
import sun.jvm.hotspot.utilities.Assert;
class FPMoveDecoder extends FloatDecoder {
FPMoveDecoder(int opf, String name, int srcType, int resultType) {
super(opf, name, srcType, resultType);
}
Instruction decodeFloatInstruction(int instruction,
SPARCRegister rs1, SPARCRegister rs2,
SPARCRegister rd,
SPARCInstructionFactory factory) {
if (Assert.ASSERTS_ENABLED)
Assert.that(rs2.isFloat() && rd.isFloat(), "rs2, rd have to be float registers");
return factory.newFPMoveInstruction(name, opf, (SPARCFloatRegister)rs2, (SPARCFloatRegister)rd);
}
}

Some files were not shown because too many files have changed in this diff Show More